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

Как да използвам ограниченията за проверка на Oracle за ограничаване на броя на регистрациите?

При определени условия можете да наложите ограничение на таблицата с материализирани изгледи :

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

С този материализиран изглед Oracle проверява ограничението на материализирания изглед, когато извършвате:

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

commit;

Това работи. Следното не:

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

commit;

Не успява с

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. вмъкване в... изберете ... с подзаявка или без ред на колони

  2. Изявлението за актуализиране в съхранената процедура на oracle не работи

  3. Oracle:преобразувайте числа в думи на език, различен от английски

  4. Проблем с ограничение на външен ключ в Oracle

  5. създаване на SQL скрипт