创建触发器时,触发器类型为after insert ,

在begin中

Select fieldA into v_a from tableA;

执行到此句时,会出错:

--弹出错误信息提示

--ORA-04091:表tr_table发生了变化触发器/函数不能读它

--ORA-06512: 在iu_table line 2

--ORA-04088: 触发器iu_table 执行过程中出错

问题分析:

在Oracle中执行DML语句的时候是需要显示进行提交操作的。当我们进行插入的时候,会触发触发器执行对触发器作用表和扩展表的种种操作,但是这个时候触发器和插入语句是在同一个事务管理中的,因此在插入语句没有被提交的情况下,我们无法对触发器作用表进行其他额外的操作。如果执行其他额外的操作则会抛出如上异常信息。

解决方案:

出错的原因是因为触发器和DML语句在同一事务管理中,所以方案一便是将触发器和DML语句分成两个单独的事务处理。这里可以使用Pragma autonomous_transaction; 告诉Oracle触发器是自定义事务处理。

Declare

pragma autonomous_transaction;

begin

-------

--这里需要显示提交事务

Commit;

End;

同时,触发器不能更新触发条件所在的行。

例如:

Create or replace trigger tri_A

After  insert on tableA

For each row

Declare

pragma autonomous_transaction;

begin

update tableA set fieldA=1 where id=:new.id;

end;

当你插入数据时,会发现,这个update语句有执行,却不生效。

然后想改为:new.fieldA= 1,执行后,报错:

ORA-04084:无法更改此触发器类型的new值

这时候,要更换策略了,不过,也得根据个人需求了, 刚好我的需求可以通过更新触发器类型after insert 为before insert

oracle触发器中的after insert后继续触发,oracle触发器使用:after insert 与before insert的简单使用注意...相关推荐

  1. oracle触发器中的after insert后继续触发,Oracle之后插入触发器

    本Oracle教程解释了如何在Oracle中创建AFTER INSERT触发器的语法和示例.AFTER INSERT触发器表示Oracle将在执行INSERT操作之后触发此触发器. 语法 在Oracl ...

  2. 通过IDoc来实现公司间STO场景中外向交货单过账后自动触发内向交货单的功能 – Part 2

    通过IDoc来实现公司间STO场景中外向交货单过账后自动触发内向交货单的功能 – Part B 6, 入站IDOC的设置 IDoc type – DELVRY01 Message Type – DES ...

  3. 通过IDoc来实现公司间STO场景中外向交货单过账后自动触发内向交货单的功能 - Part I

    通过IDoc来实现公司间STO场景中外向交货单过账后自动触发内向交货单的功能 - Part I 公司间采购(公司间库存转储)流程里,常见的解决方案是发货方完成发货过账后,自动触发收货方的内向交货单.除 ...

  4. oracle 11g json 函数,在Oracle 11g中支持JSON(Support for JSON in Oracle 11g)

    在Oracle 11g中支持JSON(Support for JSON in Oracle 11g) Oracle 11g是否支持JSON? 我的意思是像在PL / SQL查询中操纵JSON对象. 我 ...

  5. date oracle 表中_从 MySQL 迁移数据到 Oracle 中的全过程

    一.前言 这里记录一次将MySQL数据库中的表数据迁移到Oracle数据库中的全过程 ,使用工具 Navicat,版本 12.0.11 操作环境及所用工具: mysql5.7 oracle18c wi ...

  6. oracle数据库中的回收站,Oracle 10G 中的"回收站"-数据库专栏,ORACLE

    oracle 10g 中的"回收站" by fenng http://www.dbanotes.net 在oracle 10g中,引入了一个回收站(recycle bin)的概念. ...

  7. 如何获取Oracle数据库中某表及索引、约束、触发器、对象权限的创

    2019独角兽企业重金招聘Python工程师标准>>> 对于数据库中特定的某张表而言,又该如何获取建表语句.及索引.约束.外键约束.触发器.对象权限的创建脚本呢? OCM11g-&g ...

  8. oracle dba_waiters中的lockid是什么,查杀oracle lock session and table

    查杀oracle 死锁的一些帖子摘录[@more@] 查找死锁进程 column sid format 999; column b format 9; column object_name forma ...

  9. oracle oms启动慢,停止OMS后无法启动Oracle Enterprise 13C。

    Closed. This question is off-topic. It is not currently accepting answers. Want to improve this ques ...

最新文章

  1. pypy解释器提高python的效率之安装pypy
  2. Codeforces 1246D/1225F Tree Factory (构造)
  3. Leetcode题库191.位1的个数(C实现)
  4. 《Python Cookbook 3rd》笔记(1.5):实现一个优先级队列
  5. Matlab程序仿真与调试入门
  6. python安装库的方法linalg_Python linalg.gmres方法代码示例
  7. 0497计算机组成原理在线作业,0497《 综合实践活动课程设计》20秋西南大学在线作业答案...
  8. Recycleview notifyDataSetChanged()方法调用出现IllegalStateException 问题的解决
  9. H264 SPS中得到宽高的代码(java/c),测试通过
  10. MFC学习(实时更新)
  11. 哨兵系列卫星_空客“哥白尼哨兵1C”卫星雷达天线首次展开双翼
  12. 黑苹果以太网网卡已安装 无法上网
  13. Flink流处理框架总结
  14. Apache中文URL中有包含“\x85”字节的汉字时导致的Rewrite失败及404问题
  15. 文本域换行 php,js获取textarea文本域自动换行符
  16. 前端 - bootstrap树形菜单
  17. safair中vue修改了数据,但是视图没有更新解决方案
  18. 彻底解决电脑弹出USB设备时:提示该设备正在使用中无法弹出问题
  19. 三井化学将增加TAFMER™高性能弹性体产能
  20. 天梯赛题目练习L1-001,L1-002,L1-003

热门文章

  1. C语言函数大全-- l 开头的函数
  2. predict函数 R_R工程化(1) Rest API 之plumber包
  3. 测绘——通过手机和smart3D创建三维模型
  4. 处理 程序异常崩溃后的善后工作
  5. 因BIOS设定导致GPU无法使用问题
  6. Win7系统系统还原被禁用怎么办【系统天地】
  7. C# 四舍五入、进一法、舍位(取整,舍去小数,向负无穷舍入)函数
  8. Matlab中vpa一直在忙,matlab vpa 函数是什么意思?
  9. 软件测试思想者 - “中华公网共图强”观后感
  10. SOM -- 自组织特征映射网络