SQL插入选择@@ Identity

AFe*_*ter 5 sql-server

使用INSERT SELECT时如何使用@@ IDENTITY?

DECLARE @ENTITYID AS BIGINT

INSERT INTO Quiz_QuizQuestion
SELECT @ENTITYID,
       @DIFICULTLEVELCODE,
       ENTITYID,
       @QuizEntityId,
       Title,
       [Description],
       [Description],
       Duration
FROM   Education_Question
WHERE  EntityID = 1 --THIS SELECT RETURN JUST 1 RECORD
SET @ENTITYID = @@IDENTITY

SELECT @ENTITYID // NULL  
Run Code Online (Sandbox Code Playgroud)

Ole*_*Dok 4

您不需要将 @@IDENTITY 插入到您的场景中的表中 - 您必须使用IDENTITY字段创建表,如下所示:

CREATE TABLE Quiz_QuizQuestion
(
  EntityId int IDENTITY NOT NULL,
  ...
)
GO

DECLARE @ENTITYID AS BIGINT

INSERT INTO Quiz_QuizQuestion
SELECT 
       @DIFICULTLEVELCODE,
       ENTITYID,
       @QuizEntityId,
       Title,
       [Description],
       [Description],
       Duration
FROM   Education_Question
WHERE  EntityID = 1 --THIS SELECT RETURN JUST 1 RECORD
SET @ENTITYID = SCOPE_IDENTITY()

SELECT @ENTITYID // NULL 
Run Code Online (Sandbox Code Playgroud)