我一直在尝试调试由触发器产生的一些有问题的数据库事务,并且在单步执行 T-SQL 时遇到了意外结果。通过从游标中获取值后FETCH NEXT FROM Updated_Cursor
,我进入一个while循环,然后对于从游标中获取的每一行,我评估两个变量以确定在一些处理之后是否进行插入,如下所示:
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@first_indicator > 0 AND @second_indicator >0)
BEGIN
--processing and insert occurs here
在调试模式下,单步执行代码,我可以看到当这个条件的值评估为 true 时@first_indicator=1
,@second_indicator=0
这对我来说没有意义。这会导致插入重复和错误的行。这两个变量是bit
数据类型,我觉得这可能是相关的,但我不知道为什么会这样。