0
入力値が一定量を超えたときに行の削除を制限するために、「削除の代わりに」トリガーを作成したいとします。請求書(InvoiceID数、総数)削除トリガーの代わりにOracle SQL
は私が合計で> = 100に格納された値を持つ行を削除して予防しようとすると、トリガーが起動します:
は、私は2列の請求書テーブルを持っています削除。
これまでのところ、私は欲しいものを大まかに説明しましたが、正確な構文が正しいかどうかはわかりません。私が代わりにトリガを考え
CREATE OR REPLACE TRIGGER IOFD_INVOICE
INSTEAD OF DELETE ON INVOICE
BEGIN
DECLARE
TTL INTEGER;
SELECT TOTAL = TTL
FROM INVOICE
IF TTL >= 100
BEGIN
RAISERROR('Record cannot be deleted.')
ROLLBACK
END
ELSE
BEGIN
DELETE FROM INVOICE
END
END;
は、テーブルの上に使用することができますが、私は、次のエラーメッセージが表示されます。
Error report -
ORA-25002: cannot create INSTEAD OF triggers on tables
25002. 00000 - "cannot create INSTEAD OF triggers on tables"
*Cause: Only BEFORE or AFTER triggers can be created on a table.
*Action: Change the trigger type to BEFORE or AFTER.
によって達成することができる「私は正確な構文が正しいかどうかわかりません。」あなたがダミーのDBを使っているときに、Mrさんは何を言っていますか? –
@MitchWheat私に思い出させることに感謝します。エラーメッセージを追加するように更新 – eatsleepcode