我在桌子上有一个而不是触发器。触发器工作正常,但我们有一个应用程序,用户可以在其中通过 UI 对表执行批量更新。在这种情况下,select scope_identity 返回 null。当用户通过 UI 执行更新时,我运行 sql profiler 来查看后台发生了什么,我得到了这个:
insert into Table(column1, column2,....)
values (value1, value2,.....)
go
select scope_identity()
go
在这种情况下,内部定义的 scope_identity() 而不是 trigger 返回正确的值,但上述语句中的 scope_identity() 返回 null 并且应用程序此时会抛出错误。我想这是因为插入发生在触发器内部,它不属于上述 scope_identity 的范围。我知道可以通过使用 after trigger 代替 trigger 来解决此问题,但是该表包含 ntext 列,这将阻止我使用 after trigger。将 ntext 列转换为 nvarchar(max) 也不是我的选择。关于如何使 select scope_identity() 返回正确值的任何想法?
提前致谢。