我有一个带有名称和id的人员表,以及一个带有属性who和what的日志表。 我想在删除或插入人员表时插入日志表。
这是我到目前为止所做的:
CREATE OR REPLACE TRIGGER add_del
BEFORE INSERT OR DELETE ON persons
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO logs (who, what) VALUES (name, 'Insert into persons');
ELSE
INSERT INTO logs (who, what) VALUES (name, 'Delete from persons');
END IF;
END;
/
为什么这会编译错误:
警告:使用编译错误创建触发器。
答案 0 :(得分:2)
由于你没有发布错误,我不得不猜测。我的猜测是问题是name
在此上下文中不是有效的标识符。您需要引用:new.name
或:old.name
。插入时:old.name
为NULL
,而删除时:new.name
为NULL
,因此我假设您需要
CREATE OR REPLACE TRIGGER add_del
BEFORE INSERT OR DELETE ON persons
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO logs (who, what) VALUES (:new.name, 'Insert into persons');
ELSE
INSERT INTO logs (who, what) VALUES (:old.name, 'Delete from persons');
END IF;
END;