热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Oracle数据库中dml提交,奇怪,ORACLE的触发器的DML操作,没有COMMIT,居然也能真正的提交掉???...

SQLselect*fromdept;DEPTNODNAMELOC-------------------------------------10ACCOUNTINGNEWYORK

SQL> select * from dept;

DEPTNO DNAME          LOC

---------- -------------- -------------

10 ACCOUNTING     NEW YORK

20 RESEARCH       DALLAS

30 SALES          CHICAGO

40 OPERATIONS     BOSTON

写如下触发器,是为了使DEPT表的DEPTNO列发生变化的时候,EMP表的相关的行的对应的列也做相应修改,用这个来增强参照完整性的约束

SQL> create or replace trigger cascade_update

2  after update on delete on dept

3  for each row

4  begin

5  update emp

6  set emp.deptno= :new.deptno

7  where emp.deptno=

5b24fae4cde99750994428c024162093.gifld.deptno;

8  end;

9  /

after update on delete on dept

*

ERROR 位于第 2 行:

ORA-00903: 表名无效

SQL> l 2

2* after update on delete on dept

SQL> c /update on/update or

2* after update or delete on dept

SQL> /

触发器已创建

SQL> select * from dept;

DEPTNO DNAME          LOC

---------- -------------- -------------

10 ACCOUNTING     NEW YORK

20 RESEARCH       DALLAS

30 SALES          CHICAGO

40 OPERATIONS     BOSTON

看看原先EMP表有DEPTNO=10的列

SQL> select * from emp where deptno=10;

EMPNO ENAME      JOB              MGR HIREDATE          SAL       CO

---------- ---------- --------- ---------- ---------- ---------- --------

DEPTNO

----------

7782 CLARK      MANAGER         7839 09-6月 -81       2450

10

7839 KING       PRESIDENT            17-11月-81       5000

10

7934 MILLER     CLERK           7782 23-1月 -82       1300

10

SQL> update dept set deptno=1 where deptno=10;

已更新 1 行。

然后验证一下情况

发现原先有DEPTNO=10的列不见了

SQL> select * from emp where deptno=10;

未选定行

变成等于1的列了

SQL> select * from emp where deptno=1;

EMPNO ENAME      JOB              MGR HIREDATE          SAL       CO

---------- ---------- --------- ---------- ---------- ---------- --------

DEPTNO

----------

7782 CLARK      MANAGER         7839 09-6月 -81       2450

1

7839 KING       PRESIDENT            17-11月-81       5000

1

7934 MILLER     CLERK           7782 23-1月 -82       1300

1

提交一下

SQL> commit;

提交完成。

SQL> select * from emp where deptno=1;

EMPNO ENAME      JOB              MGR HIREDATE          SAL       CO

---------- ---------- --------- ---------- ---------- ---------- --------

DEPTNO

----------

7782 CLARK      MANAGER         7839 09-6月 -81       2450

1

7839 KING       PRESIDENT            17-11月-81       5000

1

7934 MILLER     CLERK           7782 23-1月 -82       1300

1

SQL> select * from dept;

DEPTNO DNAME          LOC

---------- -------------- -------------

1 ACCOUNTING     NEW YORK

20 RESEARCH       DALLAS

30 SALES          CHICAGO

40 OPERATIONS     BOSTON

SQL>

然后开另外一个回话窗口,按道理来说EMP表的改变是在触发器中实现的,触发器中又没有COMMIT语句,另一个窗口应该看不到EMP表的改变吧,但是事实是可以看到啊,说明被提交了啊。是否是DEPT提交后EMP也会被提交呢

连接到:

Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production

SQL> select * from dept;

DEPTNO DNAME          LOC

---------- -------------- -------------

1 ACCOUNTING     NEW YORK

20 RESEARCH       DALLAS

30 SALES          CHICAGO

40 OPERATIONS     BOSTON

SQL> select * from emp where deptno=10;

未选定行

SQL> select * from emp where deptno=1;

EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM

---------- ---------- --------- ---------- ---------- ---------- ----------

DEPTNO

----------

7782 CLARK      MANAGER         7839 09-6月 -81       2450

1

7839 KING       PRESIDENT            17-11月-81       5000

1

7934 MILLER     CLERK           7782 23-1月 -82       1300

1

SQL>



推荐阅读
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • HDU1085 捕获本·拉登!
    问题描述众所周知,本·拉登是一位臭名昭著的恐怖分子,他已失踪多年。但最近有报道称,他藏匿在中国杭州!虽然他躲在杭州的一个洞穴中不敢外出,但近年来他因无聊而沉迷于数学问题,并声称如果有人能解出他的题目,他就自首。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 本文详细介绍了一种实现PopupWindow全屏显示且能有效隐藏虚拟按键的技术方案,适用于Android开发。此方法经过实际测试,表现良好,兼容性优秀。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • BL550721、特点液晶驱动输出:Common输出4线,Segment输出36线内置显示寄存器364144bit2线串行接口(SCL,SDA)内置震荡电路内置液晶驱动电源电路13 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • SQL 数据恢复技巧:利用快照实现高效恢复
    本文详细介绍了如何在 SQL 中通过数据库快照实现数据恢复,包括快照的创建、使用及恢复过程,旨在帮助读者深入了解这一技术并有效应用于实际场景。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
  • 本文介绍如何通过创建数据库触发器来限制Oracle数据库中特定用户的登录IP地址,以增强系统的安全性。示例代码展示了如何阻止非授权IP地址的登录尝试。 ... [详细]
  • MyBatis入门指南:环境搭建与基础配置详解
    本文详细介绍了MyBatis的基础配置流程,包括在Maven项目中添加MyBatis依赖、IDEA中配置数据库连接、导入SQL脚本以及编写mybatis-config.xml配置文件等关键步骤。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
author-avatar
手机用户2502907815
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有