SQL Server 2008:表中的列与现有的主键或唯一约束不匹配

新手上路,请多包涵

我需要对 SQL Server 2008 数据库进行一些更改。

这需要创建一个新表,并在新表中插入一个引用现有表的主键的外键。所以我想在我的新 tblTwo 之间建立一个关系,它引用了 tblOne 的主键。

但是,当我尝试执行此操作(通过 SQL Server Management Studio)时,出现以下错误:

表 ‘tblOne’ 中的列与现有主键或 UNIQUE 约束不匹配

我不太确定这意味着什么,我想知道是否有任何解决方法?

原文由 109221793 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

这意味着 tblOne 中的主键尚未正确声明 - 您需要转到 tblOne 并将 PRIMARY KEY 约束添加回它。

如果您确定 tblOne 确实具有 PRIMARY KEY 约束,那么您的数据库中可能有多个 tblOne 表,属于不同的模式,并且您的 FK 约束中的引用子句选择了错误的表。

如果有一个复合键(您的评论会指出),那么您还必须在外键引用中包含这两列。请注意,一个表不能有多个主键 - 但如果它有一个复合键,您会在作为主键一部分的每一列旁边看到一个键符号。

原文由 Damien_The_Unbeliever 发布,翻译遵循 CC BY-SA 2.5 许可协议

另请注意,在使用另一个表列设置外键时,定义主键的表中没有现有数据。

这是我的情况下错误的原因。我不得不备份空表设置关系,然后将数据上传回来。分享我的经验 正在使用 ms sql smss

原文由 Bhavin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进