Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle - Как да наложим правила за взаимоотношения в зависимост от записите на атрибути (прост пример)

Можете да проверите това ограничение в рамките на задействане след вмъкване или актуализиране в таблицата на 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;
/

Но имате нужда от друг тригер в таблицата на персонала. В случай на промяна на типа неща (от учител към чистач) трябва да се провери за записите в таблицата с проклятия.

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?

  2. Защо Oracle добавя скрита колона тук?

  3. oracle масив, пълен с нулеви данни в java

  4. SQL Developer няма да стартира

  5. къде са DMS клас файловете на Oracle?