DDL, DML不是所有SQL都是可以自动回滚的
2016-08-19 12:13
211 查看
因为DDL没有事务性,所以DDL不能回滚。
要实现自动回滚。(begin,commit,rollback),则SQL语句中只能包括DML。
这样,自动化发布就会受限规范格式。
故而,一刀切的办法是,假定所有SQL不支持事务,自已定义好ROLLBACK的SQL脚本,在出错时能用代码回滚,
而不是依赖于数据库本身的功能。
========================
要实现自动回滚。(begin,commit,rollback),则SQL语句中只能包括DML。
这样,自动化发布就会受限规范格式。
故而,一刀切的办法是,假定所有SQL不支持事务,自已定义好ROLLBACK的SQL脚本,在出错时能用代码回滚,
而不是依赖于数据库本身的功能。
========================
DDL和DML
DDL (Data Definition Language 数据定义语言)
create table 创建表 alter table 修改表 drop table 删除表 truncate table 删除表中所有行 create index 创建索引 drop index 删除索引 当执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。如果用户使用insert命令将记录插入到数据库后,执行了一条DDL语句(如create table),此时来自insert命令的数据将被提交到数据库。当DDL语句执行完成时,DDL语句会被自动提交,不能回滚。
DML (Data Manipulation Language 数据操作语言) insert 将记录插入到数据库 update 修改数据库的记录 delete 删除数据库的记录 当执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动发出commit命令,使未提交的DML命令提交。
相关文章推荐
- 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)
- 不是什么时候都可以用栈来声明对象并使用(自动释放)——Delphi里到处都是编译器魔法,并且自动帮助实例化界面元素指针
- 不是所有的x64下的VMWare都可以安装Windows Vista x64
- 遍历当前目录下的所有子目录例子(自动生成SQl语句工具)
- oracle调用java方法的例子(下面所有代码都是在sql/plus
- sqlserver 自动备份所有数据库的SQL
- 如何使你的Sql 语句可以和null 值比较得到正确的结果,而不是永远都返回0条记录
- 可以把Access数据库自动转化成Sql的脚本编写工具
- SQL中的DDL,DML,DCL语言
- sql 事务自动回滚(笔记)
- script刷新页面,刷新代码,页面自动刷新代码2008年06月10日 星期二 23:00页面自动刷新代码大全,基本上所有要求自动刷新页面的代码都有,大家可以自由发挥做出完美的页面。
- SQL(DDL,DML,DCL及常用函数)
- DATAWINDOW中自动生成的SQL语句怎么where 后边是空的?不是有setFilter()了吗。
- 不是所有的东西可以被搜索到
- oracle调用java方法的例子(下面所有代码都是在sql/plus中写)
- 如何用JET SQL DDL创建自动编号GUID字段
- SQL与DDL DML DCL之间的关系
- SQL(DDL,DML,DCL及常用函数)
- 解决SQL备份时,提示"不是多簇媒体集的一部分,可以使用BACKUP WITH FORMAT 来构造新的媒体集."
- 自动备份所有数据库的SQL