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

Тригерът за вмъкване има ли нужда от израз за ангажиране

Не само, че тригерите не се нуждаят от COMMIT, вие не можете да поставите такъв:тригерът няма да се компилира, ако кодът на тялото включва COMMIT (или връщане назад).

Това е така, защото тригерите се задействат по време на транзакция. Когато тригерът се задейства, текущата транзакция все още не е завършена. Тъй като COMMIT прекратява транзакция, разрешаването им в тригери би нарушило работната единица.

Така че промените, изпълнени в тригер, се извършват (или се връщат назад) от притежаващата транзакция, която е издала DML, който е задействал тригера.

Вярно е, че тригерите могат да се изпълняват под PRAGMA AUTONOMOUS_TRANSACTION, в който случай те трябва да имат COMMIT. Но това е краен случай, тъй като има малко смислени употреби на вложени транзакции в Oracle.



  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 - Множество стойности, разделени със запетая, когато използвате GROUP BY

  2. Функция SIGN() в Oracle

  3. DB Design за съхраняване на персонализирани полета за таблица

  4. java.sql.SQLException:Не може да се ангажира с автоматично ангажиране, зададено на oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4443)

  5. SQL не показва нулеви стойности в заявка не е равно?