【问题标题】:Primary Key constraint主键约束
【发布时间】:2015-11-29 04:07:28
【问题描述】:

我编写了一个查询来将两个表数据合并为一个。当我尝试在主键值不同时插入值时,此查询工作正常。但是,如果我尝试在第二个表中插入相同的值(主键值),那么它会给我一个错误提示:

违反主键约束“PK_Person”。无法在对象“dbo.Person”中插入重复键。

这是我写的查询:

插入 DB1.dbo.Person select * from db2.dbo.Person

如果有重复的主键,我如何替换主键值或跳过该行。

【问题讨论】:

    标签: primary-key database-administration


    【解决方案1】:

    您可以创建一个相同结构的临时表。插入 Value,没有 Temp 表的主键。

    【讨论】:

    • 感谢您的建议。是的,如果我有 2 到 3 个表,那是可能的,但是如果我有 20 到 30 个表需要合并数据怎么办。不可能创建那么多临时表。
    • 这篇文章对你有帮助,这里是link
    • 我写了一个查询,它合并了两个表中的数据,不包括主键数据(如果存在于第一个表中)。 INSERT INTO DB1.dbo.Person(Id,Name,Age) SELECT Id,Name,Age FROM DB2.dbo.Person WHERE Id NOT IN(SELECT Id FROM DB1.dbo.Person) 缺点是我必须提到列名和主键。我想知道还有其他方法可以做到这一点。我的意思是没有提及列名。它应该默认采用主键并合并它。
    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2012-07-15
    相关资源
    最近更新 更多