You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于过期日期迁移SQL数据遇主键冲突,需自动分配主键值

解决SQL数据迁移时的主键冲突问题

问题原因

你开启了IDENTITY_INSERT,强制将源表的主键值插入目标表,但目标表dbo.ClerkDogHistory中已存在主键值10595,触发了主键约束冲突。要让SQL自动分配主键,需关闭IDENTITY_INSERT,且插入时不指定主键列。

修正后的SQL代码

BEGIN TRANSACTION;
-- 明确列出目标表中除主键外的所有列,与源表对应字段一一匹配
INSERT INTO [Table_records_are_being_moved_TO] (column2, column3, ...)
SELECT column2, column3, ...
FROM [Table_records_are_being_moved_FROM]
WHERE [expiration_date] BETWEEN '2013-01-01' AND '2013-12-31';

DELETE FROM [Table_records_are_being_moved_FROM]
WHERE [expiration_date] BETWEEN '2013-01-01' AND '2013-12-31';

COMMIT;

关键调整说明

  • 移除SET IDENTITY_INSERT ... ON/OFF:目标表主键为自增类型时,无需手动插入主键值,数据库会自动分配唯一值
  • 避免使用SELECT *:明确指定要插入的列,确保与目标表列顺序、类型完全匹配,同时排除主键列
  • 保留事务:保证插入和删除操作的原子性,防止出现数据迁移不完整的情况

额外注意事项

  • 确认目标表的主键列已设置为**自增(IDENTITY)**属性
  • 执行前先单独运行SELECT语句,核对要迁移的数据是否正确
  • 若需回滚操作,可将COMMIT替换为ROLLBACK进行测试

内容的提问来源于stack exchange,提问作者tcoady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:19:54