Mysql分配默认值会导致错误

时间:2010-07-27 00:23:09

标签: mysql database database-design mysql-error-1064

我正在尝试运行以下查询在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默认设置为version_id,因为它可以正常工作。

谢谢你 巴拉

-- Update

这是我想做的事,

当我创建一个新行时,我想使用version_id作为键。当我更新时,我想使用现有记录的值作为关键。请注意,test_id不是主键。

1 个答案:

答案 0 :(得分:2)

我认为您不能将“变量”用作默认值。它们可能必须是常量。如果你想获得这种效果,你可以在“插入前”存储过程/触发器中执行此操作,这样如果未提供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$$