触发器无需commit
也不能写commit
触发器和触发它的DML是同一个事务
DML提交了,触发器的操作也提交了,要不就一起回滚了

当然,如果你一定要在触发器里写COMMIT
那就用自治事务
相当于一个事务里的子事务

正常情况下,Oracle规定在触发器中不能运行 ddl语句和commit,rollback语句。

解决办法有两种:

1.在可以在触发器中加入:pragma autonomous_transaction; 表示自由事务处理。
如:

CREATE OR REPLACE TRIGGER T_create BEFORE insert ON T_RCatalogue
for each row
DECLARE
pragma autonomous_transaction;

NRDSId varchar(500):='';

begin

2.可以另外写一个方法,把dll语句传递到这个方法中去执行。

注释:
   ddl语句:DDL语句用语定义和管理数据库中的对象,如Create,Alter,Drop,truncate等;DDL操作是隐性提交的!操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger
   DML(Data Manipulation Language)数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据。如insert,delete,update,select等都是DML

最新文章

  1. 封锁Skype的广告(非原创)
  2. php生成随机密码的几种方法
  3. Qt开发中的实用笔记一--xml,Qpainter,Delegate:
  4. IO调度器
  5. Jenkins入门总结
  6. net组件转化成COM组件
  7. Oracle 数据库安装
  8. pyqt 同时勾选多个items(网友提供学习)
  9. Python3 TA-Lib
  10. [codility] Lession1 - Iterations - BinaryGap
  11. jstl select <c:if test下拉菜单不能被选中!
  12. FortiGate日志设置
  13. 带参数的main函数以及execl函数的应用
  14. Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?
  15. 【machine translate】deep learning seq2seq
  16. HDU 2546 饭卡(0-1背包)
  17. Linux统计某文件夹下文件的个数
  18. 【Android】15.4 例15-2--Notification基本用法
  19. json对象转换
  20. ionic 日期插件学习

热门文章

  1. Reading source code
  2. js继承模式
  3. mac terminal的使用技巧
  4. LFS,编译自己的Linux系统 - 准备分区
  5. FAT16文件系统简介
  6. C 语言---漂亮的宏定义
  7. Material风格的Quick组件,妈妈再也不用担心我的界面不好看了
  8. 35+雪花Logos设计灵感
  9. 如何导出sqlserver中的表数据,sqlserver2008
  10. C语言的本质(35)——共享库