如果带锁的事务自己不结束怎么办? && 把程序里的多个SQL放进一个事务 ?
如:
BEGIN TRAN
SELECT * FROM [TABLE] WITH(XLOCK) WHERE ...
没了, 没有COMMIT, 这样, 这两句执行以后,
这个事务就一直没办法结束, 怎么才能检测这种情况,
并强行结束这个事务?
另外,在程序里面两次或多次执行SQL 语句, 有办法把它们放进一个事务里吗?
如:
先用SELECT 查询, 然后在程序里对查询结果做处理, 再用UPDATE 语句更新数据库, 前后两个动作(SELECT+UPDATE) 能放进一个事务里吗?
谢谢!
------解决方案--------------------BEGIN TRAN
SELECT * FROM [TABLE] WITH(XLOCK) WHERE ...
没了, 没有COMMIT, 这样, 这两句执行以后,
这个事务就一直没办法结束, 怎么才能检测这种情况,
并强行结束这个事务?
----------------------------
使用@@trancount检测一下,如果大于0则说明当前连接中有事务在执行.
if @@trancount > 0
rollback /*回滚事务*/