sql >> Databáze >  >> RDS >> Oracle

Oracle – Jak vynutit pravidla pro vztahy v závislosti na záznamech atributů (jednoduchý příklad)

Toto omezení můžete zkontrolovat v rámci spouštěče po vložení nebo aktualizaci v tabulce curses.

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;
/

Ale potřebujete další spoušť na pracovním stole. V případě změny typu věci (z učitele na uklízečku) je třeba zkontrolovat položky v tabulce kleteb.

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. Ekvivalent funkce FOUND_ROWS() v Postgresql

  2. Jak nezobrazovat heslo v čistém textu při připojení k postgresu přes sqlalchemy, psycopg2?

  3. Synchronizace klientské databáze SQLite s databází serveru MySQL

  4. Jak vybrat řádky, které mají určité vztahy prostřednictvím kontingenční tabulky?