“else”部分总是在sql中执行,任何想法为什么?
use myDB
GO
begin TRANSACTION
go
declare @rowtoalter int =1
update myTempTable set name='newName' where userid=1
if(@@ROWCOUNT=@rowtoalter)
begin
commit
print N'yes it works'
end
else
begin
rollback
print N'nooo'
end
GO
答案 0 :(得分:4)
您正在更改少于或多于一行,因为userid=1
有0行或2行。 SELECT COUNT(*) FROM myTempTable WHERE userid=1
给出了什么?
我刚测试了哪一行完全,我得到“是的,它可以正常工作”
答案 1 :(得分:0)
为什么不直接将支票纳入您的更新:
declare @rowtoalter int =1
update myTempTable set name='newName' where userid=1
and (select count(*) from myTempTable where userid=1)=@rowtoalter