研究方法:为测试表建立 insert,delete,update 对应的after,before触发器,在触发器中访问当前表,然后执行测试的 insert,delete,update 语句触发这个触发器, 查看是否有异常:
ORA-04091: table YC.TR1 is mutating, trigger/function may not see it

1. 建表,并插入测试数据
create table tr1
(id number,name varchar2(10));
insert into tr1 values(1,'a');

2.建立触发器并执行测试

create or replace trigger tr1_bu
before update on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id = 1;
end;

-- 执行
update tr1 set name='b'  -- 报错

drop trigger tr1_bu;

create or replace trigger tr1_au
after update on tr1 for each row
declare
se number;
begin
select id into se from tr1 where id =1;
end;

--执行
update tr1 set name = 'b' where id = 1  --报错

create or replace trigger tr1_ai
after insert on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id = 1;
end;

--执行
insert into tr1 values(2,'b'); --报错

create or replace trigger tr1_bi
before insert on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id = 1;
end;

--执行
insert into tr1 values(2,'b'); --成功

insert into tr1
select 1,'a' from dual -- 报错

create or replace trigger tr1_ad
after delete on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id = 1;
end;

--执行
delete from tr1 where id = 2 --报错

drop trigger tr1_ad;

create or replace trigger tr1_bd
before delete on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id  =1;
end;

--执行
delete from tr1 where id = 2 --报错

总结: 只有在before insert触发器中才能编写访问当前表数据的sql语句,但是前提是用普通insert语句触发这个触发器,否则如果用insert select 来触发这个触发器,就会出错

关于trigger的muting table异常相关推荐

  1. Oracle Study之--Oracle触发器(Trigger)

    本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...

  2. java异常 字节码,Java字节码角度分析异常处理

    目录 从字节码角度来分析:异常处理 1.1 异常-catch // 从字节码角度来分析:异常处理 public class T13_ByteAnalyseException { public stat ...

  3. 数据库CREATE TRIGGER 触发器

    CREATE TRIGGER 创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行.Microsoft® SQL Server™ 允许为任何给定的 INSERT ...

  4. SQL之trigger触发器

    触发器是一种数据库对象,一般与一个表相关联,当对该表做出某种修改操作(INSERT.DELETE.UPDATE)时,它会自动地予以执行.触发器可以查询其它表,并可以包含复杂的SQL(或Transact ...

  5. 第三十九章 SQL命令 DROP TRIGGER

    文章目录 第三十九章 SQL命令 DROP TRIGGER 大纲 参数 描述 FROM 子句 示例 第三十九章 SQL命令 DROP TRIGGER 删除触发器 大纲 DROP TRIGGER nam ...

  6. 第二十一章 SQL命令 CREATE TRIGGER(一)

    文章目录 第二十一章 SQL命令 CREATE TRIGGER(一) 大纲 参数 描述 权限和锁 定义触发器的其他方式 参数 trigname event ORDER REFERENCING acti ...

  7. SQL Server 最佳实践分析器使用小结

    Best Practices Analyzer Tool for Microsoft SQL Server 2000是Microsoft SQL Server开发团队开发的一个数据库管理工具,可以让你 ...

  8. [转]SQLServer和Oracle,存储过程区别,常用函数对比

    本文转自:http://www.cnblogs.com/neru/archive/2011/08/18/2144049.html 以前一直用sqlserver,只有很少的一点oracle的经验,现在要 ...

  9. ORACLE触发器具体解释

    ORACLE PL/SQL编程之八: 把触发器说透 本篇主要内容例如以下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 ...

最新文章

  1. ASP.NET Core 数据保护(Data Protection)【中】
  2. 如何做出受欢迎的字体排版风格?
  3. 史上最快的拼接字串方法
  4. Uipath 学习栏目基础教学:2Uipath变量介绍
  5. 软件稳定性测试的测试点
  6. 包含html语言的超链接标记的网页_零基础入门 HTML 的 8 分钟极简教程
  7. java 及时释放内存_JMM(一):初识Java内存模型
  8. JavaScript获取select下拉框中的第一个值
  9. linux运行欧陆风云,Arm linux启动分析(1)
  10. 计算机职业素养论文1500字,【如何提高职业素养1500字】_个人职业素养提升计划1500字范文...
  11. 微信小程序样式padding理解
  12. 安卓火狐浏览器wifi远程调试没有扫描二维码应用的问题
  13. 【图像识别】基于计算机视觉实现自动报靶系统(重弹孔)含Matlab源码
  14. Pod进程内存缓存分析
  15. Arduino人体红外模块控制
  16. 基于uni-app手机端后台管理系统uni-uadmin
  17. STC51单片机学习笔记1——看门狗程序测试
  18. 精准化测试之:jacoco实现增量代码覆盖率统计
  19. mysql 5.7 安装配置教程(windows 64位)
  20. 本科数学专业基础类课程

热门文章

  1. oracle11g 客户端字符集,查看 Oracle11g 的字符集
  2. b2g process 和nuwa process 通信
  3. 基于C#的快递物流管理系统#毕业设计
  4. python和anaconda安装顺序_Anaconda详细安装步骤图文教程
  5. 蓝底寸照该如何在手机上修改照片底色
  6. HDU 3265 - Posters
  7. 游戏脚本用什么语言写_为什么要写分镜头脚本?
  8. poi解析不固定列excel
  9. 印象笔记服务器自动备份,印象笔记跨平台自动备份短信图文教程
  10. 基于Paddle复现《Neighbor2Neighbor: Self-Supervised Denoising from Single Noisy Images》降噪网络