ITPub博客

首页 > 数据库 > Oracle > 提防DDL提交事务

提防DDL提交事务

原创 Oracle 作者:luisedalian 时间:2014-01-15 16:20:08 0 删除 编辑

点击(此处)折叠或打开

  1. --会话A
  2. conn luise/luise;
  3. DROP TABLE t PURGE;
  4. CREATE TABLE t AS SELECT * FROM dba_objects;
  5. SELECT COUNT(*) FROM t;

  6.   COUNT(*)
  7. ----------
  8.      75515
  9.      
  10. DELETE FROM t;
  11. CREATE INDEX idx_t_objectid ON t(object_id);

  12. --登录另一个会话B, 并执行. 结论:刚才的会话已经提交了.
  13. SELECT COUNT(*) FROM t;

  14.   COUNT(*)
  15. ----------
  16.          0

  17. --在会话A执行
  18. INSERT INTO t SELECT * FROM dba_objects;
  19. --故意写错的一个SQL语句
  20. CREATE INDEX idx_t_objectid ON t(object_aa);

  21. ERROR at line 1:
  22. ORA-00904: \"OBJECT_AA\": invalid identifier

  23. --在会话B. 说明会话A又提交了,即使会话A的DDL语句失败了.
  24. SELECT COUNT(*) FROM t;

  25.   COUNT(*)
  26. ----------
  27.      75516
  28.          
  29. --结论:DDL语句执行的第一步就是COMMIT,然后才是执行DDL语句本身.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1071035/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: INSERT INTO错误
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6040856