0

我有 2 张桌子。我需要在 PL/SQL 中编写一个触发器,随时更新或删除表 1(赋值)中的 PROJCODE,更新项目中的代码,并从项目中删除不再出现在表 1 中的代码。然后在项目表中打印出列(代码)

我尝试编写此代码,但仍然收到代码未声明的错误,并且 :new.code 和 :old.code 是错误的绑定变量 'OLD.CODE'!

CREATE OR REPLACE TRIGGER update_1
  BEFORE UPDATE OR DELETE OF PROJCODE
  ON ASSIGNMENT
  FOR EACH ROW
BEGIN
  IF UPDATING THEN
    UPDATE PRODUCT P
    SET P.CODE = :new.CODE
    WHERE P.CODE = :old.CODE;
  ELSE
     DELETE FROM PROJECT WHERE :old.CODE= CODE ;
  END IF;
     DBMS_OUTPUT.PUT_LINE(CODE);
END;

我该如何解决这个问题?

4

1 回答 1

0

你的触发器应该变成:

CREATE OR REPLACE TRIGGER update_1
  BEFORE UPDATE OR DELETE ON PROJCODE
  REFERENCING new AS new old AS old
  FOR EACH ROW
BEGIN
  IF UPDATING THEN
    UPDATE PRODUCT P
    SET P.CODE = :new.CODE
    WHERE P.CODE = :old.CODE;
  ELSE
     DELETE FROM PROJECT WHERE :old.CODE= CODE ;
  END IF;
     DBMS_OUTPUT.PUT_LINE(CODE);
END;
/
于 2013-03-14T19:26:55.193 回答