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

Chỉ cho phép 3 hàng được thêm vào bảng cho một giá trị cụ thể

Điều này yêu cầu một xác nhận, được định nghĩa trong tiêu chuẩn SQL nhưng không được triển khai trong Oracle. (Mặc dù có động thái để giới thiệu chúng ).

Những gì bạn có thể làm là sử dụng chế độ xem hiện thực hóa để thực thi nó một cách minh bạch.

create materialized view project_manager
refresh on commit 
as 
select Project_manager_employee_id
        , count(*) as no_of_projects
from project
group by Project_manager_employee_id
/

Điều kỳ diệu là:

alter table project_manager
   add constraint project_manager_limit_ck check 
       ( no_of_projects <= 3 )
/

Ràng buộc kiểm tra này sẽ ngăn chế độ xem cụ thể hóa được làm mới nếu số lượng dự án cho người quản lý vượt quá ba, điều này sẽ khiến cho việc chèn hoặc cập nhật kích hoạt không thành công. Phải thừa nhận rằng nó không thanh lịch.

Vì mview được làm mới khi cam kết (tức là theo giao dịch), nên bạn sẽ cần tạo nhật ký trên project bảng:

create materialized view log on project


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sao lưu cơ sở dữ liệu Oracle:Loại chiến lược sao lưu và dự phòng

  2. Chuyển đổi giữa mệnh đề để kết hợp

  3. Tạo số thứ tự đã chọn

  4. Hibernate 4.3.5 bỏ qua thuộc tính cấu hình v $ session.program

  5. Làm thế nào để thay đổi số (7,2) thành varchar trong oracle?