的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
?感谢名单!
答案 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;