sql >> Database >  >> RDS >> Oracle

Oracle - Hoe regels op relaties af te dwingen, afhankelijk van attributenrecords (eenvoudig voorbeeld)

Je zou deze beperking kunnen controleren in een na invoeging of update trigger op curses tabel.

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

Maar je hebt nog een trigger nodig op de personeelstafel. In het geval van een verandering van het type spullen (van leraar naar schoonmaker) moet het worden gecontroleerd op de vermeldingen in de vloekentabel.

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. Kan geen verbinding maken met MySql-database op een externe linux-server vanuit een Windows GUI-tool

  2. Compatibiliteit met Oracle Client en ODP.NET-versies

  3. MySQLi-equivalent van MySQL-code

  4. PHP zet komma om in een <br />