0

私は2つのテーブルを持っています。TABLE 1(assignment) の OF PROJCODE をいつでも更新または削除し、プロジェクトの UPDATE CODE を更新または削除し、table1 に表示されなくなったコードをプロジェクトから削除するトリガーを PL/SQL に記述する必要があります。次に、プロジェクト テーブルの列 (コード) を出力します。

このコードを書き込もうとしましたが、それでもコードが宣言していないというエラーが発生し、: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 に答える