2

データベース内にトリガーを作成していますが、修正できない2つのエラーに遭遇しました。これら2つはDBMS_OUTPUT.PUT_LINEの使用に関連していると確信しています。ステートメントの残りの部分は何も引き起こしません以前はありましたが、エラー。

エラー:

エラー (5,3): PL/SQL: SQL ステートメントは無視されました

エラー (5,15): PL/SQL: ORA-00903: 無効なテーブル名

コード:

CREATE TRIGGER INVOICES
BEFORE INSERT OR UPDATE ON BRUINVOICE
FOR EACH ROW 
BEGIN  
  IF :new.BRU_DATE < :new.BRU_PAID_DATE THEN
  DBMS_OUTPUT.PUT_LINE('You cannot do that');
  ELSE
  INSERT INTO table BRUINVOICE
  values 
  from inserted;
END IF;
END;
4

2 に答える 2

3

私はcstotzerに完全に同意します。チェック制約は、あなたの状況でははるかに優れているため、推奨される方法です。ただし、参考までに、これはトリガー構文になります。

CREATE TRIGGER INVOICES
BEFORE INSERT OR UPDATE ON BRUINVOICE
FOR EACH ROW 
BEGIN  
  IF :new.BRU_DATE < :new.BRU_PAID_DATE THEN
     RAISE_APPLICATION_ERROR(-20001, 'You cannot do that');
  END IF;
END;

この場合ELSEINSERTorUPDATEは単に実行されます。

于 2015-01-28T07:13:55.500 に答える