2013-01-24 35 views
0

我执行存储过程,但它总是抛出这个错误:错误插入表

The INSERT statement conflicted with the FOREIGN KEY constraint "OSFRK_OSUSR_ijq_BANK_ACCOUNT_OSUSR_IJQ_BANKA_CLIENT_CLIENT_ID". The conflict occurred in database "BANCDEV", table "dbo.OSUSR_IJQ_BANKA_CLIENT", column 'ID'.

表是空的,没有任何行,什么是它的原因是什么?如果我在插入选择中执行TOP 1,则错误仍然存​​在。

回答

2

外键意味着给定的键必须指向'foreign'表中的有效记录,所以如果它是空的,那是失败的。无法为不存在的客户端创建记录。

0

您试图将行插入到具有外键约束的表中。例如,如果我有两个表员工和e_numbers。 e_numbers只有号码,但员工有e_numbers中的号码以及员工的姓名和名字,此外员工的外键是e_numbers表中的号码。我不能在没有相应行的员工中插入一行e_numbers。看看外键是什么列,看看它在说什么表。在运行此插入语句之前,请确保您在该表中有一行。

0

以下是根据您发布的信息进行的猜测。为了让我们完全回答这个问题,您需要提供更多信息 - INSERT语句的实际外观,表格之间的关系(获取表格定义/模式)等等。

因为上表中的列插入很有可能被引起的误差(从公布的信息有限,我想这是类似“的BankAccount”)被定义为外键到另一个表(再次,猜测它就像“BankClient”)在另一个表的“ID”列上。

它有效地定义了BankClient和BankAccount之间的父子关系(“一对多”)。因此,具有给定ID的BankClient可以拥有许多BankAccounts,每个BankAccounts都通过“ID”列绑定到BankClient。所以我希望BankAccount表有一些“BankClientID”或类似的字段。

这意味着为了将记录插入到“BankAccount”表中,其“BankClientID”字段必须具有值并且该值必须存在于“BankClient”记录的“ID”列中。 希望有所帮助。