2010-07-27 60 views
2

我想運行下面的查詢在mysql中創建一個表,並且出現錯誤。Mysql分配默認導致錯誤

create table newtable ( 
     version_id int(11) auto_increment not null, 
     test_id int(11) default version_id, 
     primary key(version_id) 
); 

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'version_id not null, primary key(version_id), unique key(test_id))' at line 1 

我正在上面的錯誤。

我認爲問題在於將test_id的default設置爲version_id,因爲否則它會起作用。

謝謝
巴拉

-- Update 

這是我想做的事,

當我創建一個新的行,我想用VERSION_ID的關鍵。當我更新時,我想使用現有記錄的值作爲關鍵字。請注意,test_id不是主鍵。

+0

您的更新是不明確......沒有這些信息改變我的答案呢?如果你願意,你也可以在更新之前或之後添加觸發器... – vicatcu 2010-07-27 00:44:23

回答

2

我不認爲你可以使用「變量」作爲默認值。他們可能必須是常數。如果你想得到這個效果,你可以在「Insert」之前的存儲過程/觸發器中這樣做,這樣如果沒有提供trial_id,它將被分配與version_id相同的值...

這裏的a tutorial可能會幫助你達到目的。

我覺得你的觸發看起來是這樣的:

mysql> CREATE TRIGGER myTrigger 
    -> BEFORE INSERT ON newtable 
    -> FOR EACH ROW 
    -> BEGIN 
    ->  IF NEW.trial_id IS NULL THEN 
    ->   SET NEW.trial_id = NEW.version_id; 
    ->  END IF; 
    -> END$$