新しいレコードがticket_priceの表の中に挿入されるたびに、予約値を増加させるトリガーを作成しようとしています。レコードが削除された場合は、予約された値を減らして使用可能な値を増やしたいと考えています。私は成功したINSERTのトリガ仕事をすることができていますが、私はレコードを削除しようとするたびPL/SQL ORACLE:削除時の更新のトリガー
、私は彼が私が取得エラーですrecord.Tの削除に値を更新するために同じことを行うことができません
ORA-01403: no data found
ORA-06512: at "K.CAL", line 6
ORA-04088: error during execution of trigger 'K.CAL'
私は削除している同じテーブルではなく、別のテーブルの値を更新しています。ここで
は、トリガのための私のコードです:
CREATE OR REPLACE TRIGGER cal
BEFORE INSERT OR DELETE ON TICKET_PRICE FOR EACH ROW
DECLARE
V_TICKET TICKET_PRICE.TICKETPRICE%TYPE;
V_BOOKED FLIGHTSEAT.BOOKED_SEATS%TYPE;
V_AVAILABLE FLIGHTSEAT.AVAILABLE_SEATS%TYPE;
BEGIN
SELECT BOOKED_SEATS,AVAILABLE_SEATS
INTO V_BOOKED,V_AVAILABLE
FROM FLIGHTSEAT
WHERE SEAT_ID=:NEW.SEAT_ID;
IF INSERTING THEN
V_BOOKED:=V_BOOKED+1;
V_AVAILABLE:=V_AVAILABLE-1;
UPDATE FLIGHTSEAT
SET BOOKED_SEATS=V_BOOKED, AVAILABLE_SEATS=V_AVAILABLE
WHERE SEAT_ID=:NEW.SEAT_ID;
ELSIF DELETING THEN
V_BOOKED:=V_BOOKED-1;
V_AVAILABLE:=V_AVAILABLE+1;
UPDATE FLIGHTSEAT
SET BOOKED_SEATS=V_BOOKED, AVAILABLE_SEATS=V_AVAILABLE
WHERE SEAT_ID=1;
END IF;
END;
申し訳ありませんが、私は自分自身をとてもうまく説明したとは思わないのです。私は値が飛行機と呼ばれる別のテーブルに追加されることを意味した。だから私はちょっと私が思うように選択する必要があります – Kim
他のテーブルflightseatそれから最初に選択する必要はありません。 update ... set col = col + incrを選択し、col ...をvarに選択します。 var = var + inct; update ... set col - var;両方ともまったく同じ結果を生み出します。 – Belayer
Worked。本当にありがとう。あなたは素晴らしいです! – Kim