2012-07-01 68 views
0

我有這樣的MySQL表:MySQL的:如何設置默認的用戶在觸發

create table test.customer (
ID    INTEGER, 
CREATION_TIME DATETIME, 
CREATION_USER VARCHAR(50), 
CHANGE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
CHANGE_USER VARCHAR(50), 
PRIMARY KEY(ID) 
); 

我想自動設置用戶&時間戳記錄的目的。我有插入前一個觸發器(只實際寫入的CREATION_TIME):

delimiter # 
create trigger test.customer_creation 
before insert on test.customer 
for each row 
begin 
set NEW.CREATION_TIME = NOW(); 
IF (NEW.CREATION_USER is null or NEW.CREATION_USER = '') 
THEN set NEW.CREATION_USER = USER(); 
end IF; 
end # 
delimiter ; 

,但我真的不希望只是爲了CHANGE_USER觸發。有沒有可能設置CHANGE_USER類似於:DEFAULT USER()?還是我必須創建一個額外的觸發器?

+0

不幸的是,您不能使用函數作爲列的默認值。 _數據類型規範中的DEFAULT值子句指示列的默認值。有一個例外,默認值必須是常數;它不能是一個函數或表達式http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html –

+0

感謝您的解釋。 mysql知識+1 =) – CodingGentleman

回答

1

在MySQL中,你根本無法使用的功能作爲默認值一列,你可以使用 關鍵字:NULLCURRENT_TIMESTAMPlocaltimestamp,而不能使用在內部代表的功能(除了now()作爲CURRENT_TIMESTAMP的同義詞)。

所以在你的情況下,要遵循的方式是觸發器插入...你需要額外的觸發器。

+0

好的,謝謝你的快速回復。我的觸發器數量乘以2 = / – CodingGentleman