sql >> Database >  >> RDS >> Oracle

Oracle - Hoe de gebruiker te dwingen meerdere rijen in te voegen

Met het standaard voorwoord dat dit niet is hoe je dit soort dingen in de echte wereld zou doen...

U zou hier realistisch een trigger op instructieniveau moeten gebruiken. Als je de prestatiehit van het elke keer controleren van elke kamer niet erg vindt

CREATE OR REPLACE TRIGGER Living_AIUD
  AFTER INSERT OR UPDATE OR DELETE
  ON Living
DECLARE
  Count NUMBER;
BEGIN
  FOR x IN (SELECT rid, count(*) cnt
              FROM living
             GROUP BY rid
            HAVING COUNT(*) < 3)
  LOOP
    RAISE_APPLICATION_ERROR(-20002, 'Too few people in room ' || x.rid);
  END LOOP;
END Living_AIUD;

Als je dit niet elke keer voor elke kamer wilt controleren, heb je een pakket nodig met een verzameling van rid waarden, een before-instructietrigger die de verzameling initialiseerde, en een trigger op rijniveau die de :new.rid toevoegde waarde voor de collectie. Je trigger voor na de verklaring zou dan de elementen in de verzameling herhalen en het aantal mensen in alleen die kamers controleren.




  1. Wat is het verschil tussen de NIET-voorwaarde en NIET() in Oracle en MS SQL Server?

  2. Oracle SQL:niet-bestaande waarden ophalen uit de IN-clausule

  3. Openshift MYSQL-omgevingsvariabelen niet ingesteld

  4. Mysql DateTime groep met 15 minuten