Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara menggunakan batasan pemeriksaan Oracle untuk membatasi jumlah pendaftaran?

Dalam kondisi tertentu, Anda dapat menerapkan pembatasan tabel dengan tampilan terwujud :

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

Dengan tampilan terwujud ini, Oracle memeriksa batasan pada tampilan terwujud saat Anda melakukan:

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

commit;

Ini bekerja. Berikut ini tidak:

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

commit;

Gagal dengan

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. PILIH menggunakan Klausa UNION

  2. Cara Melanjutkan Pemrosesan Kursor Loop Setelah Pengecualian Di Oracle

  3. membuat skrip SQL

  4. Fungsi JPQL LOWER dalam Ekspresi IN

  5. Bagaimana cara mengonversi pernyataan bergabung luar kiri lama di Oracle?