【发布时间】:2015-05-14 19:09:22
【问题描述】:
我有一个问题描述如下:我有一个表,而不是插入触发器:
create table TMessage (ID int identity(1,1), dscp varchar(50))
GO
Alter trigger tr_tmessage on tmessage
instead of insert
as
--Set NoCount On
insert into tmessage
select dscp from inserted
GO
Alter proc P1
As
--Set NoCount On
insert into tmessage
(dscp)
values('some data')
Select SCOPE_IDENTITY()
GO
当我执行 P1 时,它为 SCOPE_IDENTITY() 返回 Null 而不是表的标识。我什至在proc的插入语句中尝试了Output子句。但在这种情况下,从插入到输出子句中填充的输出表标识字段再次为 0。
任何帮助将不胜感激。
【问题讨论】:
-
您需要向我们展示触发器!
-
你试过@@IDENTITY而不是scope_identity()吗?
-
尝试使用
IDENT_CURRENT(‘tablename’)而不是scope_identity()。 read this article to learn the differences. -
@ZoharPeled 我需要在会话中创建相同的身份,因为可能有其他会话同时插入到表中。
-
@Sahand,不,这是数据库设计中的错误
标签: sql-server triggers