Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pembaruan Pemicu Oracle di Tabel Lain

  1. Sebuah IF pernyataan membutuhkan THEN
  2. Dalam PL/SQL, Anda menggunakan = untuk menguji kesetaraan, bukan ==
  3. Anda perlu mendeklarasikan variabel yang Anda pilih

Ketika saya melakukan tiga hal itu, saya mendapatkan sesuatu seperti ini

create or replace trigger PASSENGER_BOOKING_T1
  AFTER insert on PASSENGER_BOOKING
  for each row
declare
  l_seat       flight.seat%type;
  l_flight_id  flight.flight_id%type;
begin
  IF (:NEW.CLASS_TYPE = 'ECO')
  THEN
    SELECT F.AVL_SEATS_ECOCLASS,F.FLIGHT_ID 
      INTO l_seat, l_flight_id
      FROM BOOKING B, 
           JOURNEY_FLIGHT J, 
           FLIGHT F 
     WHERE B.JOURNEY_ID = J.JOURNEY_ID 
       and F.FLIGHT_ID = J.FLIGHT_ID;

    UPDATE FLIGHT 
       SET AVL_SEATS_ECOCLASS = (l_seat-1)
     WHERE FLIGHT_ID = l_flight_id;   
  END IF;
end;​

Di luar kesalahan sintaks tersebut, saya akan terkejut jika SELECT INTO pernyataan itu benar. Sebuah SELECT INTO harus mengembalikan tepat 1 baris. Kueri Anda hampir pasti akan mengembalikan beberapa baris karena tidak ada predikat yang akan membatasi kueri untuk penerbangan tertentu atau pemesanan tertentu. Agaknya, Anda ingin bergabung ke satu atau beberapa kolom di PASSENGER_BOOKING tabel.

Selain itu, jika ini adalah sesuatu selain tugas pekerjaan rumah, pastikan Anda memahami bahwa pemicu semacam ini tidak berfungsi dengan benar di lingkungan multi-pengguna.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendesain tabel yang akan menyimpan data yang sangat besar?

  2. Melanjutkan Sisipan di Oracle saat pengecualian muncul

  3. Kursor Bersarang di PL/SQL

  4. Skema Entitas Independen Kode Kerangka Migrasi Pertama

  5. Membuat penangan logging untuk terhubung ke Oracle?