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

Làm thế nào để sử dụng các ràng buộc kiểm tra oracle để giới hạn số lượng đăng ký?

Trong các điều kiện nhất định, bạn có thể thực thi hạn chế bảng với chế độ xem cụ thể hóa :

create table tq84_t (
  user_id   number,
  foo       varchar2(10),
  constraint pk_tq84_t primary key (user_id, foo)
);

create materialized view log on tq84_t;

create materialized view tq84_mv 
 refresh on commit
as
  select user_id, count(*) cnt
    from tq84_t
   group by user_id;

alter table tq84_mv
  add constraint check_max_2_registrations 
  check (cnt < 3);

Với chế độ xem cụ thể hóa này, Oracle sẽ kiểm tra ràng buộc đối với chế độ xem cụ thể hóa khi bạn cam kết:

insert into tq84_t values (1, 'a');
insert into tq84_t values (1, 'b');

commit;

Những công việc này. Những điều sau đây không:

insert into tq84_t values (1, 'c');

commit;

Nó không thành công với

ORA-12008: error in materialized view refresh path
ORA-02290: check constraint (META.CHECK_MAX_2_REGISTRATIONS) violated


  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 để chọn một cột từ tất cả các bảng mà nó nằm trong đó?

  2. Hàm REMAINDER () trong Oracle

  3. đột biến, trình kích hoạt / chức năng có thể không nhìn thấy nó- lỗi trong quá trình thực thi trình kích hoạt

  4. Bảng ALTER &DROP DDL với việc thực thi ngay lập tức trong cơ sở dữ liệu Oracle

  5. Lỗi đầu ra Fiddle SQL