我想使用国家/地区代码更新表格中的列,并使用新的id
作为自动增量值。
BEGIN
SET new.key = concat(new.countryCode,new.id);
END
countryCode
工作正常,但id
始终为空。我怎样才能实现这样的目标? id
来自autoincrement
列。
我知道它不起作用,因为它是在插入后生成的。那我怎么能这样做呢?
答案 0 :(得分:4)
AUTO_INCREMENT
列仅在插入后设置。
如果您需要访问该值,则只能在AFTER INSERT
触发器中。但是,您无法修改 AFTER UPDATE
触发器中的列值...
此外,您无法对AFTER INSERT
触发器中使用的表格执行更新(http://dev.mysql.com/doc/refman/5.0/en/stored-program-restrictions.html):
在存储的函数或触发器中,不允许修改a 已经被使用(用于读或写)的表 调用函数或触发器的语句。
这里唯一合理的解决方案是创建一个存储过程来更新表,调整事务中的相关列以“模拟”你的原子插入语句。
话虽如此,在您的特定情况下,key
列是多余的,因为该列只是同一行中另外两列的串联。
鉴于其名称,您不是在寻找创建复合键的方法吗?这样的事情:
ALTER TABLE tbl ADD UNIQUE KEY (countryCode, id);