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
的值。
有可能吗?
答案 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');