触发器插入在同一个表上

时间:2013-05-03 09:14:46

标签: mysql triggers

我有一张看起来像这样的表:

table t1 (
id INT autoincremente,
numero VARCHAR
)

当插入时我需要设置numero = prefix + id的值。

所以我尝试使用触发器:

CREATE TRIGGER `mySweetTrigger`
AFTER INSERT ON `t1`
FOR EACH ROW
BEGIN
    SET NEW.numero = CONCAT('prefix', NEW.id);
END

但是不能让它发挥作用......

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

不允许后插入触发器修改它自己的数据。前插入没有可用的自动增量值。所以这看起来像个问题。

幸运的是,您可以从架构中访问自动增量值。

CREATE TRIGGER `mySweetTrigger`
BEFORE INSERT ON `t1`
FOR EACH ROW
BEGIN
    SET NEW.numero = CONCAT('prefix', 
      (
        SELECT 
          AUTO_INCREMENT 
        FROM information_schema.TABLES 
        WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'
      ));
END