SCOPE_IDENTITY()應該在這種情況下工作,它應該作用域爲您的存儲過程,並插入到表A,而不是在完成觸發插入。
CREATE TABLE [dbo].[TableA](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TestColumn] [nvarchar](50) NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[TableB](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TestColumn] [nvarchar](50) NULL
) ON [PRIMARY]
CREATE TRIGGER [dbo].[TableA_AIDU]
ON [dbo].[TableA]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO TableB (TestColumn)
SELECT 'TableA Modified'
END
CREATE PROCEDURE [dbo].[sp_InsertToTableA]
@ID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT TableA (TestColumn)
SELECT 'Insert from sp_InsertToTableA'
SET @ID = SCOPE_IDENTITY()
END
存儲過程從TableA返回ID,並按預期觸發TableB插入。你確定你沒有使用@@ IDENTITY而不是SCOPE_IDENTITY()嗎?
請發佈您的SP和觸發代碼 – Raj
這是一種罕見的情況,通常應返回TableA的最後插入的身份。 – TechDo
像上面說的不能真正幫助你沒有看到代碼 – Jester