sql >> データベース >  >> RDS >> Oracle

挿入時に例外をスローするトリガーを作成しています

    例外を発生させますか(挿入が成功しなくなります)?または、挿入が成功して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;
    

    もちろん、実際には、この種のことに対してトリガーを使用することは決してありません。現実の世界では、制約を使用します。




    1. HibernateはタイムスタンプをUTCとして永続化/ロードするように強制します

    2. SqlDeveloper:ネットワークエイリアスリストをクリアします

    3. mysqlの最大結合テーブルはいくつですか?そしてそれを数える方法は?

    4. JMeterJDBCプール構成