あなたが引き金とテーブルの名前を変更するに述べた、しかし、I 「が(単に完全性のため)ここで再びそれらを指摘するでしょう:
- 『トリガー』は予約されている単語:
が、私は3つのミスを参照してください。私は以下の例で "ctrigger"に変更しました。
- "table"は予約語です。私は以下の例では「ジャンク」に変更しました。
- "date"は予約語です。私は以下の例で "cdate"に変更しました。
- 私はこの時点で "cdate"が
DATE
のデータ型であると仮定します。
以下のコードは正常に機能します。これをシステム上で「そのまま」実行して、動作するかどうかを確認してください。
それでも、テーブルで失敗する場合は、テーブルの定義を参照してさらにトラブルシューティングを行う必要があります。
drop table junk;
create table junk (id number,
cdate date);
CREATE OR REPLACE TRIGGER ttrigger
BEFORE INSERT OR UPDATE
ON junk
FOR EACH ROW
BEGIN
IF :NEW.cdate > SYSDATE THEN
RAISE_APPLICATION_ERROR(-20950, 'Error!');
END IF;
END;
/
テスト結果は、次のとおりです。
SQL > create table junk (id number,
cdate date);
2
Table created.
Elapsed: 00:00:00.07
SQL > CREATE OR REPLACE TRIGGER ttrigger
BEFORE INSERT OR UPDATE
ON junk
FOR EACH ROW
BEGIN
IF :NEW.cdate > SYSDATE THEN
RAISE_APPLICATION_ERROR(-20950, 'Error!');
END IF;
END;
/
Trigger created.
Elapsed: 00:00:00.20
SQL > show err
No errors.
SQL >
なぜだけではなく、それを実行し、それが動作するかどうかを確認しますか? – Mureinik
コードが動作すればここに書き込むと思いますか? – KRiSTiN
もしそうでなければ、エラーを(もしあれば)共有するか、それがどのように誤解しているかの説明(エラーがない場合)が本当に助けになります。 – Mureinik