使用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
答案 0 :(得分: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
答案 1 :(得分:2)
这是从@@IDENTITY
的MSDN页面逐字复制的:
“在INSERT
,SELECT INTO
或批量复制语句完成后,@@IDENTITY
包含语句生成的最后一个标识值。如果该语句不影响具有标识列的任何表,@@IDENTITY
返回NULL
。如果插入多行,生成多个标识值,@@ IDENTITY将返回生成的最后一个标识值。“ (link)。我不知道你是否需要更多信息。
答案 2 :(得分:1)
@@identity
仅提供IDENTITY field
中插入的最后一个值。
您需要创建IDENTITY field
而不是:)