SQL:访问当前插入的标识列值

时间:2015-06-26 08:21:22

标签: sql sql-server identity sql-insert

TABLE -> Example (A,B,C,D)

A是一个身份column。我该怎么做:

INSERT INTO Example(B,C,D) VALUES (b,c, 'valueOF(A) sometext');

即。我希望在插入期间访问标识column 'A' in column D的值。 有可能吗?

1 个答案:

答案 0 :(得分:2)

是输出关键字:

DECLARE @Result TABLE(A BIGINT)

INSERT INTO Example(B, C, D) 
OUTPUT INSERTED.A INTO @Result 
VALUES (b, c, '');

现在,您在@Result表格中插入了A列的值。

UPDATE e SET d = CAST(r.A as varchar(10)) + 'some text'
FROM Example e
JOIN @Result r on e.A = r.A

如果您有Sql Server 2012+,则可以使用sequential object。从列identity中删除A。然后创建一个序列:

CREATE SEQUENCE dbo.Sequencename AS INT
MINVALUE 1
CYCLE;

然后使用它:

DECLARE @a INT    
SELECT @a = NEXT VALUE FOR dbo.Sequencename

INSERT INTO Example(A, B, C, D) 
VALUES (@a, b, c, CAST(@a as varchar(10)) + 'some text');