首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PK是身份的表上违反主键(重复键)?

在PK是身份的表上违反主键(重复键)?
EN

Stack Overflow用户
提问于 2016-08-10 13:59:28
回答 1查看 969关注 0票数 5

所以我有张桌子:

代码语言:javascript
复制
CREATE TABLE [Snapshots].[Crashproof](
    [EmoteCountId] [int] IDENTITY(1,1) NOT NULL,
    [SnapshotId] [int] NOT NULL,
    [Emote] [nvarchar](42) NOT NULL,
    [EmoteCountTypeId] [int] NOT NULL,
    [Count] [decimal](19, 6) NOT NULL,
    CONSTRAINT [PK_SnapshotsCrashproof] PRIMARY KEY CLUSTERED ([EmoteCountId] ASC) ON [PRIMARY],
    CONSTRAINT [FK_SnapshotsCrashproof_Snapshots] FOREIGN KEY ([SnapshotId]) REFERENCES [Snapshots].[Snapshots] ([SnapshotId]) ON DELETE CASCADE,
    CONSTRAINT [FK_SnapshotsCrashproof_EmoteCountTypes] FOREIGN KEY ([EmoteCountTypeId]) REFERENCES [dbo].[EmoteCountTypes] ([EmoteCountTypeId])
) ON [PRIMARY]
GO

而插入到其中的代码:

代码语言:javascript
复制
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default, trans))
{
    bulkCopy.DestinationTableName = "Snapshots.Crashproof";
    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("SnapshotId", "SnapshotId"));
    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("EmoteCountTypeId", "EmoteCountTypeId"));
    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Emote", "Emote"));
    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Count", "Count"));

    using (IDataReader reader = ObjectReader.Create(emoteCountTypesToSnapshot))
    {
        bulkCopy.WriteToServer(reader);
    }
}

它在99.99%的时间内运行良好(每分钟完成一次大容量复制),但是有一次出现了异常,它位于最后一行(bulkCopy.WriteToServer(reader);)上:

违反主键constraint...Cannot在对象‘Snapshots.Crash防’中插入重复密钥。重复键值为(247125)。

我知道不建议在最后一个表中直接插入大容量,我将修改我的代码,将其大容量插入到一个暂存表中,然后从那里插入。但这是导致这一例外的原因吗?

我真的不明白一个重复的键怎么会出现在一个标识字段上:

EN

回答 1

Stack Overflow用户

发布于 2016-09-29 17:53:52

我的建议是使用ETL产品来完成这些任务。他们为你组织了一切,做了这么干净的工作。乱搞散装拷贝和存储过程,制作分期表(我做了很多年了),现在对我来说实在是太丑了。

在过去的几年里,我一直在使用五旬节水壶,并且完全爱上了它。这个任务只需要几分钟,或者不到一分钟就能实现,并且完成从一个地方到另一个大堆中的所有正常移动/转换数据的工作。

我知道这不是对你问题的直接回答,但如果有人来找我问这个问题的话,这是我马上会建议的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38875584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档