sql 的一个疑难杂症,有可能是这样吗?大牛请进!
一个sql语句是这样写的,没有事务,出现这种情况有可能吗?
update tableA set a='1',status='2'
where 条件
insert into tableB(field1,field2) values('1','2')
结果,tableB 插入了记录,tableA 的 a 更新为1了,status却没更新到。
怎么会这样,有可能吗?
办公室里一个从事多年编程的说,也曾遇过这样的情况。
以我的知识,很难理解会出现这种情况,大家有何高见?
sql?奇怪的事情 疑难杂症
[解决办法]
UPDATE/INSERT/DELETE是“自动提交事务”,而且无法手动回滚,也就是如果没有加begin tran,是不能用rollback。每个操作实际上可以理解为一个单独的事务,所以如果你的update失败,insert会继续操作,互相不影响
[解决办法]
没高见,只有基本原理和逻辑。
那是不可能的事,对技术,太多事不是靠片面的经验去推断的,必须得靠逻辑去推理
表明你同事根本不懂DB
[解决办法]
检查一下tableA和tableB上是否有触发器.
select a.name 'tablename',b.name 'triggername'
from sys.tables a
inner join sys.objects b on a.object_id=b.parent_object_id and b.type='TR'
where a.name in('tableA','tableB')