外键约束问题

时间:2012-03-20 17:07:15

标签: sql foreign-keys

什么可能导致FK错误?我正在将一个'Activity'记录插入到一​​个数据库中,该数据库上有一个'StaffId'字段(带有Staff表的FK),我找到了有问题的staffId(没有空格等)并且它确实存在。还有什么可能导致外键字段出错?

编辑:错误:

  

INSERT语句与FOREIGN KEY约束冲突   “FK_Activities_Staff”。冲突发生在数据库中   “DataWarehouseB”,表“dbo.Staff”,列“StaffId”。该声明   已被终止。

1 个答案:

答案 0 :(得分:2)

SQL Foreign Key文档说

  

如果数据库架构包含需要的外键错误   查看多个表定义以识别,然后查找   创建表时未检测到错误。相反,这样   错误阻止应用程序准备SQL语句   以使用方式修改子表或父表的内容   外键。内容更改时报告的错误是“DML错误”   更改架构时报告的错误是“DDL​​错误”。所以,   换句话说,错误配置的外键约束需要   看着孩子和父母都是DML错误。英语   外键DML错误的语言错误消息通常是“外来的”   密钥不匹配“但如果父表的话,也可以是”没有这样的表“   不存在。如果出现以下情况,可能会报告外键DML错误:

     
      
  • 父表不存在。
  •   
  • 外键约束中指定的父键列不存在。
  •   
  • 外键约束中指定的父键列不是父表的主键,不受a的约束   使用CREATE中指定的整理顺序的唯一约束   表。
  •   
  • 子表引用父键的主键,而不指定主键列和主键数   父级中的列与子键列的数量不匹配。
  •   

某些数据库可能也支持使用non-unique index as a foreign key reference