2017-04-07 91 views
0
CREATE TABLE `williamhill` (
    `id` VARCHAR(50) NULL, 
    `nick` VARCHAR(50) NULL, 
    `password` VARCHAR(50) NULL DEFAULT (SELECT default_password FROM person p WHERE p.id = id), 
    `Colonna 4` VARCHAR(50) NULL 
) 
COLLATE='latin1_swedish_ci' 
ENGINE=InnoDB 

如何在MYSQL中執行類似操作?如果在創建新行期間未指定任何值,我試圖從另一個表中分配一個默認值。創建表並將查詢作爲默認值分配給某個字段

這是可能的,或者我應該使用觸發器/程序?

+1

沒有。你不能那樣做。您將不得不使用觸發器來設置此類默認值。 –

回答

1

MySQL是非常明確的,這是不能做到的。首先,默認語法稱爲默認。預計值。

這裏是documentation如何描述這一點:

在數據類型說明書中的DEFAULT值子句表示爲列一個 默認值。 有一個例外,默認值 必須是常數;它不能是一個函數或表達式。

(唯一的例外是CURRENT_TIME其中大多數人可能甚至不知道是一個函數)。

很多數據庫允許函數調用這裏。沒有 - 據我所知 - 允許查詢表達式。但是,這通常可以在用戶定義的函數中模擬。

解決方法是使用觸發器。在另一個表中查找值是觸發器的一種相當普遍的用法。

相關問題