例外を発生させますか(挿入が成功しなくなります)?または、挿入が成功してdbms_output
に文字列を書き込むことを許可しますか? 存在する場合と存在しない場合があり、インサートを実行している人間に表示される場合と表示されない場合があるバッファー?
いずれの場合も、これをステートメントレベルのトリガーではなく、行レベルのトリガーにする必要があるため、for each row
を追加する必要があります。 条項。
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
例外を発生させたい場合
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
出力を印刷する可能性があるが、insert
を許可する場合 成功する
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
もちろん、実際には、この種のことに対してトリガーを使用することは決してありません。現実の世界では、制約を使用します。