0

我有一个带有名称和 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;
  /

为什么编译时出现错误:

警告:使用编译错误创建触发器。

4

1 回答 1

2

由于您没有发布错误,我不得不猜测。我的猜测是问题在于name在这种情况下它不是有效的标识符。您需要引用:new.name:old.name:old.nameNULL在插入时:new.nameNULL在删除上,所以我假设您想要类似的东西

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;
于 2012-12-07T02:38:32.213 回答