繁体   English   中英

SQL触发器导致错误

[英]SQL triggers cause errors

让我们创建一个TestParent表,该表缓存TestParent表中num列的TestChild ,并插入一些行。

CREATE TABLE TestParent (
id INT NOT NULL PRIMARY KEY,
total INT NOT NULL DEFAULT 0);

CREATE TABLE TestChild (
parent_id INT NOT NULL,
num INT NOT NULL);

INSERT INTO TestParent (id) VALUES (123);
INSERT INTO TestChild (parent_id, num) VALUES (123, 1);

CREATE PROCEDURE Sync (IN parent INT)
    UPDATE TestParent SET total = (
        SELECT SUM(num) FROM TestChild WHERE parent_id=parent)
    WHERE id=parent;

CALL Sync (123);

到现在为止还挺好。 现在,我希望自动调用Sync ...

CREATE TRIGGER TestInsert
AFTER INSERT ON TestChild
FOR EACH ROW CALL Sync (parent_id);

这也有效。 现在,

INSERT INTO TestChild (parent_id, num) VALUES (123, 1);

#1054 - Unknown column 'parent_id' in 'field list'

插入已发生,但尚未调用存储过程。 这是怎么回事?

您需要使用NEW.parent_id来引用刚刚插入的值

CREATE TRIGGER TestInsert
AFTER INSERT ON TestChild
FOR EACH ROW CALL Sync (NEW.parent_id);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM