我想把旧公司的行复制到新公司。
SET IDENTITY_INSERT [SomeDB].[dbo].[SomeTable] ON;
INSERT INTO [SomeDB].[dbo].[SomeTable]
([HRCo]
,[Code]
,[Type]
,[Description]
,[SafetyYN]
,[Notes]
,[UniqueAttchID]
,[CertPeriod]
,[KeyID]
,[PTOTypeYN]
,[PRLeaveCode])
SELECT '6',
SomeTable.Code
,SomeTable.Type
,SomeTable.Description
,SomeTable.SafetyYN
,SomeTable.Notes
,SomeTable.UniqueAttchID
,SomeTable.CertPeriod
,[KeyID]
,SomeTable.PTOTypeYN
,SomeTable.PRLeaveCode
FROM [SomeDB].[dbo].[SomeTable]
WHERE HRCo = '11'
SET IDENTITY_INSERT [SomeDB].[dbo].[SomeTable] OFF;
我得到的结果是一个错误:
无法在具有唯一索引“bikeyid”的对象“dbo.sometable”中插入重复的键行。重复的键值是(1377)。
有没有一种方法可以对这个列使用increment(它不是一个主键列)或者可能有另一种方法来复制多个记录?
2条答案
按热度按时间9bfwbjaz1#
你在评论里说主键是开的
([HRCo], [Code], [Type])
以及IDENTITY
是KeyID
. 这个信息应该在问题中。这对于理解正在发生的事情很重要。您正在设置
HRCo
至6
对于您的副本,我假设这保证了新的主键是唯一的。至于
KeyID
,的IDENTITY
列将在过程中自动获取其(新的、递增的)值INSERT
,因此不应将此列包含在INSERT
声明。这是什么IDENTITY
做。IDENTITY
自动为新行指定新的顺序值。你不应该SET IDENTITY_INSERT
在这里。让IDENTITY
做它能做的。注意,我删除了
KeyID
两列中的列INSERT
以及SELECT
声明。xe55xuns2#
如果您正在使用
你不必设置pk值。例如,如果pk是keyid,则从insert中删除此列。
可能是这样的: