sql >> Database teknologi >  >> RDS >> Oracle

Tillad kun at tilføje 3 rækker til en tabel for en bestemt værdi

Dette kræver en påstand, som er defineret i SQL-standarden, men ikke implementeret i Oracle. (Selvom der er tiltag for at få dem introduceret ).

Hvad du kan gøre, er at bruge en materialiseret visning til at håndhæve det gennemsigtigt.

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
/

Magien er:

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

Denne kontrolbegrænsning forhindrer, at den materialiserede visning bliver opdateret, hvis antallet af projekter for en leder overstiger tre, hvilken fejl vil medføre, at den udløsende indsættelse eller opdatering mislykkes. Det er ganske vist ikke elegant.

Fordi mview'et opdateres ved commit (dvs. transaktionsmæssigt), skal du bygge et log på project tabel:

create materialized view log on project


  1. Tilføj backticks i oprettelse af tabel til mysql med csv-filen -PHP

  2. Antal gange et bestemt tegn optræder i en streng

  3. Sådan indsætter du et php-kodestykke i mysql-databasen

  4. Oracle getConnection langsom