关于网友提出的“ MS SQL 如何调试”问题疑问,本网通过在网上对“ MS SQL 如何调试”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: MS SQL 如何调试
描述: 触发器里的处理内容
--自动判断 库存
if exists ( select * from inserted )
begin
raiserror ('仓库库存不够', 16, 1) --这个会给出消息错误提示
rollback transaction
end
INSERT INTO SD_临时表(订单号,行号,客户) VALUES('dj01','001','测试点1') --测试点1
我的问题是:
1:我在数据库后台逐语句调试时,当EXISTS条件满足时,即会给出错误提示了,但是后面的 INSERT语句还是会执行到,虽然最终结果是不会执行插入的。 我觉得应该是执行到rollback transaction,这个触发器就应该马上退出了吧。
2:调试时,可以看到inserted 里的内容吗? 我刚开始用MS SQL的调试功能,感觉调试只能看到执行顺序,看不到里面具体结果集或者一些参数值呀。 是这样吗?
解决方案1: 1,rollback transaction 对应的是哪个begin transaction ?错误级别16属于终止执行了。sql语句是顺序执行的,两个语句都不在同一个块中,下面的插入肯定也执行了,出发加个else判断。
2,想看inserted的内容,创建一张表,在触发器中将inserted记录插入到那张表。
解决方案2: rollback transaction后面加return语句后面语句才不运行
解决方案3: 1:我在数据库后台逐语句调试时,当EXISTS条件满足时,即会给出错误提示了,但是后面的 INSERT语句还是会执行到,虽然最终结果是不会执行插入的。 我觉得应该是执行到rollback transaction,这个触发器就应该马上退出了吧。
--> 是的.
2:调试时,可以看到inserted 里的内容吗? 我刚开始用MS SQL的调试功能,感觉调试只能看到执行顺序,看不到里面具体结果集或者一些参数值呀。 是这样吗?
--> 不可以看inserted的内容, 调试时SSMS下方有Output窗口可查看参数值.
解决方案4: 可以考虑把这个结果,写到一个临时表
insert into temp
select * from inserted
以上介绍了“ MS SQL 如何调试”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3240261.html