PL/SQLでトリガーを記述する必要があります。条件が真であるときに挿入を防止したい。PL/SQL挿入を防止するためのトリガー
CREATE OR REPLACE TRIGGER SafeRent AFTER INSERT ON Rent
FOR EACH ROW
DECLARE
BEGIN
IF :NEW.id_status IN (1,2) THEN
DELETE FROM Rent WHERE id_rent = :NEW.id_rent;
END IF;
END;
コードへの爆発:id_statusが1または2の場合は、挿入をしないことをおすすめします。
これは私が書いたトリガーです。条件が真であれば、挿入後にレコードを削除します(私はそれをテストしませんでした)。
挿入する前にそれを防ぐ方法はありますか?
私は 'BEFORE INSERT'タイプのトリガーで例外が発生すると考えていましたが、それは良い解決策ですか?
PS:それはトリガーでなければならない、私はチェック制約として実装できることを知っている。
あなただけ追記Raise_application、との正しい、あなたは前にそれを発射、または挿入後にすることができます。両方の方法で動作します。 –
「-20343」はどこで入手できましたか? –
@Matthewこれはエラーコードの例です。この記事では、「RAISE_APPLICATION_ERRORプロシージャ」セクションのhttps://docs.oracle.com/cloud/latest/db112/LNPLS/errors.htm#LNPLS99960に関する詳細情報を示します。私はそれを完全に無作為なものに編集しました。 :-) – Tenzin