如何根据自动增量字段为字段值编写MySQL INSERT触发器?

时间:2016-06-02 06:38:17

标签: mysql triggers

的MySQL。我有自动增量主键字段的表:

CREATE TABLE myTable (
 id INT AUTO_INCREMENT PRIMARY KEY,
 field VARCHAR(45)
);

我想根据主键值自动写一些字段。 这不起作用:

CREATE TRIGGER `myTable_AFTER_INSERT` AFTER INSERT ON `myTable` FOR EACH ROW
BEGIN
 UPDATE myTable SET field=CONCAT(NEW.id,"T") WHERE id=NEW.id;
END;

在这种情况下,我收到来自MySQL的错误:

  

无法更新表格" myTable"在存储的函数/触发器中因为它   已经被调用此存储函数/触发器的语句使用。

这也不起作用:

CREATE TRIGGER `myTable_BEFORE_INSERT` BEFORE INSERT ON `myTable` FOR EACH ROW
BEGIN
 SET NEW.field=CONCAT(NEW.id,"T");
END;

在这种情况下,NEW.did未定义。

如何根据自动增量ID将一些值存储到field?感谢名单!

1 个答案:

答案 0 :(得分:0)

它适用于下一个触发器:

CREATE TRIGGER `myTable_BEFORE_INSERT` BEFORE INSERT ON `myTable` FOR EACH ROW
BEGIN
    SET @new_field = "";
    SELECT AUTO_INCREMENT INTO @new_field
        FROM information_schema.tables
        WHERE table_name = 'myTable'
        AND table_schema = DATABASE();
    SET NEW.field=CONCAT("A",@new_field);
END;