在SQL Server中克隆/复制记录,并自动增加ID
我想复制注册表id=1的所有行,并且克隆行的id应自动递增 当我执行在SQL Server中克隆/复制记录,并自动增加ID,sql,sql-server,Sql,Sql Server,我想复制注册表id=1的所有行,并且克隆行的id应自动递增 当我执行 insert into [ZAC2].[dbo].[rubrics] ([reference] ,[name_de] ,[name_fr] ,[name_en] ,[name_es] ,[registry_id] ,[registry_type] ,[parent_id] ,[created_at] ,[updated_at] ,[creator_id] ,[updater_i
insert into [ZAC2].[dbo].[rubrics]
([reference]
,[name_de]
,[name_fr]
,[name_en]
,[name_es]
,[registry_id]
,[registry_type]
,[parent_id]
,[created_at]
,[updated_at]
,[creator_id]
,[updater_id]
,[level]
,[inherited_rating]
,[has_children])
select ([reference]
,[name_de]
,[name_fr]
,[name_en]
,[name_es]
,[registry_id]
,[registry_type]
,[parent_id]
,[created_at]
,[updated_at]
,[creator_id]
,[updater_id]
,[level]
,[inherited_rating]
,[has_children]
FROM [ZAC2].[dbo].[rubrics]
where registry_id=1
我收到错误消息:
无法在具有唯一索引“idx\u rubrics\u reference\u registry”的对象“dbo.rubrics”中插入重复的键行。重复的键值是(0,1,RegistryPlan)
使用脚本键as>Create To>New Query Editor窗口
I获取:
ALTER TABLE [dbo].[rubrics]
ADD PRIMARY KEY CLUSTERED ([id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80
) ON [PRIMARY]
(<reference, varchar(255),>
,<rating, varchar(1),>
,<name_de, varchar(255),>
,<name_fr, varchar(255),>
,<name_en, varchar(255),>
,<name_es, varchar(255),>
,<registry_id, int,>
,<registry_type, varchar(255),>
,<parent_id, int,>
,<created_at, datetime,>
,<updated_at, datetime,>
,<creator_id, int,>
,<updater_id, int,>
,<level, int,>
,<inherited_rating, varchar(1),>
,<has_children, bit,>)
使用scripttable as>Insert To>newquery Editor窗口
I获取:
ALTER TABLE [dbo].[rubrics]
ADD PRIMARY KEY CLUSTERED ([id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80
) ON [PRIMARY]
(<reference, varchar(255),>
,<rating, varchar(1),>
,<name_de, varchar(255),>
,<name_fr, varchar(255),>
,<name_en, varchar(255),>
,<name_es, varchar(255),>
,<registry_id, int,>
,<registry_type, varchar(255),>
,<parent_id, int,>
,<created_at, datetime,>
,<updated_at, datetime,>
,<creator_id, int,>
,<updater_id, int,>
,<level, int,>
,<inherited_rating, varchar(1),>
,<has_children, bit,>)
(
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,)
@marc\s您完全正确,我没有正确阅读错误消息。idx_rubrics_reference_注册表具有唯一约束,因此无法复制行。我更改了它(事实上,我的insert方法带有引用注册表的另一个id),现在它可以工作了。非常感谢 复合键中的字段是什么?它们是什么字段类型?智力?瓦查尔?自动增量?不为null?我在我的原始帖子中粘贴了一些来自SQLServerManagementStudio的输出。如何获取ID字段类型?名为idx\u rubrics\u reference\u registry
的唯一索引的定义是什么?这是导致错误的原因-而不是您正在显示的PK。。。。显然,使用您的INSERT。。选择…
statement,您正在生成违反此唯一约束的新行-您需要修复此问题!多么糟糕的一张桌子啊。@kermit,你会怎么设计那张桌子?