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

Oracle - Как да принудите потребителя да ВМЪКНЕ няколко реда

Със стандартния предговор, че това не е начинът, по който наистина бихте направили подобни неща в реалния свят...

Реално ще трябва да използвате тригер на ниво изявление тук. Ако нямате нищо против намаляването на производителността от проверката на всяка стая всеки път

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;

Ако не искате да проверявате това за всяка стая всеки път, ще ви трябва пакет с колекция от rid стойности, тригер преди изявление, който инициализира колекцията, и тригер на ниво ред, който добавя :new.rid стойност за колекцията. След това тригерът ви след израз ще премине през елементите в колекцията и ще провери броя на хората само в тези стаи.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Query:Как да сравним две колони от различна таблица със стойности, разделени със запетая

  2. Преобразуване на дата в низ от Oracle

  3. Най-добрият начин за сравняване на VARCHAR2 с CHAR

  4. Генериране на sql вмъкване в за Oracle

  5. Нуждаете се от помощ за съхраняване на стойност от три колони