OracleのPLSQLを初めて使用しています。私がトリガーについて学んでいるとき、私はこのソースからhttps://www.techonthenet.com/oracle/triggers/before_insert.phpを読んでいます。これは、BEFORE INSERT
トリガーをOracleで作成すると、必ずしも必要ではないので、構文は大括弧[]で囲まれています。その後、エラーメッセージからOracleのBEFORE INSERT TRIGGERでFOR EACH ROWが不要なのはいつですか?
Error report -
ORA-04082: NEW or OLD references not allowed in table level triggers
04082. 00000 - "NEW or OLD references not allowed in table level triggers"
*Cause: The trigger is accessing "new" or "old" values in a table trigger.
*Action: Remove any new or old references.
私は:new.[column_name]
を使用している場合、それはのように思える:私は上記でFOR EACH ROW
を削除した場合、私は実際にエラーを取得する
CREATE OR REPLACE TRIGGER enroll_time
BEFORE INSERT
ON ENROLL
FOR EACH ROW
BEGIN
:new.addtime := sysdate;
END;
/
:私はこの単純なトリガーを書かれていますFOR EACH ROW
が存在する必要があります。どうしてこれなの?オラクルのBEFORE INSERT TRIGGER
にFOR EACH ROW
が必要ない例はありますか?
例外を発生させるトリガーを作成する - データがテーブルに挿入されないようにします。 –