これはほとんどの場合、単純な問合せに見えるかもしれませんが、Oracle DBの初心者です。 以下の表は、script-Oracle_Trigger:INSERT/UPDATEに基づく列の自動更新
CREATE TABLE PLAN_TABLE
(
PL_ID DECIMAL(10,0) PRIMARY KEY NOT NULL
,PL_NAME VARCHAR2(300) DEFAULT NULL
,UPDATED_TS TIMESTAMP DEFAULT SYSDATE NOT NULL
,DELETE_FLAG DECIMAL(10,0) DEFAULT 0 NOT NULL
);
で作成された要件はDELETE_FLAGが1に更新されたときに表にしても、ケースに挿入された新しいレコードのUPDATED_TSためSYSDATEを持つことであることをすることによって行うことができます引き金? ORA-04091は:表I60_SCH04.PLAN_TABLEが変異され、トリガ/関数
それを表示しないことが 以下トリガ卓上 エラーにレコードを挿入中に発生したエラー以下
CREATE OR REPLACE TRIGGER PT_BEFORE_INSERT_TR
BEFORE INSERT ON PLAN_TABLE
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.UPDATED_TS FROM DUAL;
dbms_output.put_line('Inserted');
END;
/
created-ました間違いをどこにしているのか教えてもらえますか? INSERT/UPDATEに基づいて要件を達成するためのよりよい方法はありますか?
多くのおかげでは、サンプルの下に試みたが、結果 - が をBEGIN、CREATE OR EACH ROW FOR PLAN_TABLE ON DELETE_FLAG OF UPDATE BEFOREトリガーTR_AP_BEF_UPDATE をREPLACE以下で終了IF:NEW.DELETE_FLAG = 1 THEN:NEW。 UPDATED_TS:= SYSDATE END IF; dbms_output.put_line( '挿入'); END; / --result:NEW.UPDATED_TS:EACH ROW はBEGINの無効なトリガー がDELETE_FLAG ON PLAN_TABLE の更新前TRIGGER TR_AP_BEF_UPDATE を作成するか、またはREPLACE = SYSDATEと、 dbms_output.put_line( '挿入'); END; / - 結果:有効なトリガー INVALID TRIGGERでコミットされた間違いを見つけられますか? – Anshu
最初の亜種のSYSDATEの後にセミコロン(;)がありませんでした。 – micklesh
学習に感謝します。ではごきげんよう。 – Anshu