jdbc的Statement的事务问题

jdbc的Statement的事务问题,

  Statement 对insert,delete,update等sql语句能进行事务提交,能回滚.也就是conn.setAutoCommit(false);能起作用.

  但是对于grant/revoke等语句却不能回滚.

  如:
String sqlIn1 = "insert into test1 values(1)";//正确语句,
String sqlIn1 = "insert into test1 values(1,1)";//错误语句
String sqlIn1 = "insert into test2 values(1)";//正确语句
String sqlIn2 = "insert into test2 values(2,22)";//错误语句
           事务回滚成功.   

String sql1 = "create user aaa identified by root";
String sql2 = "grant select on proxy_users to dddddd";//假设数据库无dddddd用户此处
             ORA-01917: 用户或作用'DDDDDD'不存在

                     事务回滚失败,sql1成功执行,数据库增加aaa用户.

不知道是否有人能指点一二?   

3个回答

一般的数据库中只有DML支持事务操作,所以能够回滚。DDL是不支持事务操作的。
但是也有数据库可以支持DDL事务,这样DDL也能回滚了,要查看具体的数据库文档。

包括 create drop 等语言都是不能回滚的。也就只有数据操作语言 insert update delete select 这些可以回滚。

一般的数据库的ddl是不支持事务的,也有例外[url=http://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis] PostgreSQL[/url]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!