Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle - Cách thực thi các quy tắc trên các mối quan hệ tùy thuộc vào các bản ghi thuộc tính (ví dụ đơn giản)

Bạn có thể kiểm tra hạn chế này trong bộ triger sau khi chèn hoặc cập nhật trên các lời nguyền tabelle.

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

Nhưng bạn cần một trình kích hoạt khác trên bảng nhân viên. Trong trường hợp thay đổi loại nội dung (từ giáo viên sang người dọn dẹp), nó phải được kiểm tra các mục nhập trong bảng nguyền rủa.

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. Làm thế nào để ghi lại một cơ sở dữ liệu

  2. Tôi nên di chuyển các thay đổi DDL từ môi trường này sang môi trường tiếp theo như thế nào?

  3. Tôi có thể tìm thấy danh sách đầy đủ các Ngoại lệ Oracle pl / SQL được xác định trước ở đâu?

  4. Cách lấy danh sách tất cả các khung nhìn cụ thể trong oracle

  5. Tham gia mất quá nhiều thời gian