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