0
すべてのフィールドをチェックしても問題ありませんが、このエラーが発生する SQLコマンドでこのトリガを記述すると、トリガが作成されたと表示されますが、 無効これは、ここに私のトリガーOracle PL/SQL不良バインド変数
create or replace trigger "Max_Crew_T1"
Before insert or update on "CREW"
for each row
declare
v_count number;
Begin
select count(*) into v_count from CREW where AirPlaneID=:NEW.AirPlaneID;
if
v_count > 5
then
Raise_Application_ERROR(-20343,'Crew number exceeded');
END IF;
END;
あるエラーメッセージです。引用符でテーブルを作成中に飛行機のIDを定義しているため
PLS-00049: bad bind variable 'NEW.AIRPLANEID'
テーブルDESC
をあなたは 'ショーのエラーを追加することができます;'最後に、実際のエラーがあるかを確認します。 – gvenzl
@gvenzl私の質問に間違っている編集しました –
トリガーには別の問題があります。トリガーをトリガーした同じテーブルにアクセスすべきではありません。 一度にレコードを1つだけ挿入するとうまくいくので、すでに変更される前にテーブルにアクセスしています(選択カウント(*))。しかし、技術的には同じステートメント( "insert ... select"ステートメントを使用)。この場合、トリガーは最初の行に対してのみ正しく実行されますが、同じステートメントの2番目の行に対してトリガーされると、「テーブルが突然変異しています」というエラーが発生します。私はあなたに「化合物トリガー」について読むことをお勧めします。 –