0

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

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

但是不能让它工作...

在此先感谢您的帮助。

4

1 回答 1

1

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

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

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
于 2013-05-03T09:32:20.910 回答