插入SQL Server中的主键字段

时间:2014-03-14 18:46:29

标签: sql-server sql-server-2012

有没有办法在ID语句中增加具有主键的INSERT INTO SELECT字段?
我想要做的是获取表的最后ID并为ID语句生成的每条新记录插入递增的INSERT INTO SELECT

3 个答案:

答案 0 :(得分:2)

你可以这样做:

DECLARE @lastId int = 0
SELECT @lastId = MAX(Id) From YourTable 

INSERT INTO YourTable (Id, Data)
SELECT (ROW_NUMBER() OVER (ORDER BY (SELECT 0))) + @lastId, at.Data
FROM AnotherTable at

请务必将其添加到交易范围内。

SqlFiddle:http://www.sqlfiddle.com/#!3/d23642/5

无论如何,我强烈建议您使用IDENTITY列以避免碰撞。

答案 1 :(得分:0)

可能获得最大ID,然后在每个Insert上增加一个

INSERT MAX(ID)+1

答案 2 :(得分:0)

我认为这就是你要找的东西。我们假设PK是一个INT用于演示目的。

--Get the last/greatest PK value in first table.
DECLARE @LastPKValue INT
SELECT @LastPKValue = MAX(PKCol)
FROM [schema].[YourTable]

INSERT INTO [schema].[YourTable] (PKCol, ColA, ColB, ColC)
SELECT 
    ROW_NUMBER()  OVER( ORDER BY sot.[SomeColumnName]) + @LastPKValue, 
    OtherColumnA, 
    OtherColumnB, 
    OtherColumnC
FROM [schema].[SomeOtherTable] sot