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

Oracle - Cara menegakkan aturan pada hubungan tergantung pada catatan atribut (contoh sederhana)

Anda dapat memeriksa batasan ini dalam pemicu setelah memasukkan atau memperbarui pada tabel kutukan.

CREATE or replace TRIGGER check_leader
AFTER INSERT OR UPDATE ON  Course
FOR EACH ROW
declare
  v_type varchar2(30);
BEGIN
  select type into v_type from stuff where :NEW.leader_id = stuff.stuff_id;
  if v_type != 'teacher' then 
   RAISE_APPLICATION_ERROR(-20000, 'course leader must be teacher');
  end if;
end;
/

Tetapi Anda memerlukan pemicu lain di tabel staf. Dalam kasus perubahan jenis barang (dari teacher ke cleaner ) Itu harus diperiksa untuk entri di tabel kutukan.

CREATE or replace TRIGGER check_courses
AFTER UPDATE ON  STUFF
FOR EACH ROW
declare
  v_num number;
BEGIN
  if :OLD.type = 'teacher' and :NEW.type != 'teacher' then
     select count(*) into v_num from curses where courses.leader_id = :NEW.stuff_id;
     if v_num > 0 then 
       RAISE_APPLICATION_ERROR(-20000, 'there are courses assigned ');
      end if;
  end if;
end;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Unicode Spooling

  2. Oracle membandingkan dua tanggal yang berbeda

  3. Sqlplus oracle :Bagaimana saya bisa menjalankan perintah sql di bash dalam 1 baris?

  4. Menyalin data dari Kolom LOB ke Kolom Baku Panjang

  5. Fungsi NLS_LOWER() di Oracle