我正在尝试运行以下查询在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不是主键。
答案 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$$