+ -
当前位置:首页 → 问答吧 → ASE语句中的事务判断问题

ASE语句中的事务判断问题

时间:2010-08-26

来源:互联网

  1. set rowcount 10000
  2. while exists(select * from table_name  where ........)
  3. begin
  4. delete from tablename where ........
  5. end
  6. go
复制代码
执行该语句的界面输出为:
  1. 10000 rows affect.
  2. 10000 rows affect.
  3. 10000 rows affect.
  4. 10000 rows affect.
  5. 10000 rows affect.
  6. 10000 rows affect.
  7. 10000 rows affect.
  8. 10000 rows affect.
  9. .......
复制代码
请问,这样的话是每一万条是一个事务,还是整个while循环是一个事务?

作者: zq5143   发布时间: 2010-08-26

本帖最后由 hobbylu 于 2010-08-27 08:51 编辑

上述语句的类似日志显示如下

下载 (160.65 KB)
2010-08-27 08:37


带上begin/end transaction的事务
下载 (166.23 KB)
2010-08-27 08:50


说明是每一万条一个事务

作者: hobbylu   发布时间: 2010-08-27

将循环分解成:
set rowcount 10000
delete from tablename where ........
go

sybase默认是隐式事务提交,除非加上begin transaction才开隐式事务。加个while循环也同道理。

delete from tablename where ........
go 100
这个语句也是相同的!

作者: andkylee   发布时间: 2010-08-27

logtran这个工具又完善了, 呵呵

作者: andkylee   发布时间: 2010-08-27

确认过了,是每1万条一个事务,谢谢斑竹和andkylee

作者: zq5143   发布时间: 2010-08-27