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

Създаване на тригер, който хвърля изключение при вмъкване

Искате ли да предизвикате изключение (което би попречило на вмъкването да успее)? Или искате да позволите на вмъкването да успее и да напишете низ в dbms_output буфер, който може или не може да съществува и може или не може да бъде показан на човек, изпълняващ вмъкването?

И в двата случая ще искате това да е тригер на ниво ред, а не тригер на ниво израз, така че ще трябва да добавите for each row клауза.

CREATE OR REPLACE TRIGGER person_id_trigg
  AFTER INSERT
  ON person
  FOR EACH ROW

Ако искате да предизвикате изключение

BEGIN
  IF( length( :new.id ) <> 11 )
  THEN
    RAISE_APPLICATION_ERROR( -20001, 
                             'The new ID value must have a length of 11' );
  END IF;
END;

Ако искате потенциално да отпечатате изход, но разрешите insert за успех

BEGIN
  IF( length( :new.id ) <> 11 )
  THEN
    dbms_output.put_line( 'The new ID value must have a length of 11' );
  END IF;
END;

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




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

  2. Създаване на таймер в Oracle Forms / Forms 6i и показване на часовник

  3. Как да приложите пакетно извличане с Fluent NHibernate, когато работите с Oracle?

  4. Oracle Cloud:Създаване на база данни за автономна обработка на транзакции (ATP).

  5. Oracle 11g - Намерете записи в CLOB с връщане на каретката