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

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


但无法使其正常工作...

在此先感谢您的帮助。

最佳答案

插入后触发器不允许修改其自己的数据。之前插入没有可用的自动增量值。因此,这似乎是一个问题。

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

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

09-25 18:31