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

Izinkan hanya 3 baris untuk ditambahkan ke tabel untuk nilai tertentu

Ini membutuhkan pernyataan, yang didefinisikan dalam standar SQL tetapi tidak diimplementasikan di Oracle. (Meskipun ada langkah untuk memperkenalkannya ).

Yang dapat Anda lakukan adalah menggunakan tampilan terwujud untuk menegakkannya secara transparan.

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
/

Keajaibannya adalah:

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

Batasan pemeriksaan ini akan mencegah tampilan yang terwujud di-refresh jika jumlah proyek untuk seorang manajer melebihi tiga, yang kegagalannya akan menyebabkan penyisipan pemicu atau pembaruan gagal. Diakui itu tidak elegan.

Karena mview di-refresh saat komit (yaitu secara transaksional), Anda perlu membuat log di project tabel:

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. Bagaimana cara mengurangi duplikasi kode yang disebabkan oleh substring dan instring?

  2. Eksekusi kueri lambat di tabel kosong. (setelah menghapus sejumlah besar sisipan)

  3. ora-01722 nomor tidak valid menggunakan count(1) pada operator minus dua tampilan

  4. Mengapa variabel Oracle plsql varchar2 membutuhkan ukuran tetapi parameter tidak?

  5. Cara terhubung ke Oracle menggunakan Nama Layanan alih-alih SID