0

我正在执行一个存储过程,但它总是抛出这个错误:

INSERT 语句与 FOREIGN KEY 约束“OSFRK_OSUSR_ijq_BANK_ACCOUNT_OSUSR_IJQ_BANKA_CLIENT_CLIENT_ID”冲突。冲突发生在数据库“BANCDEV”、表“dbo.OSUSR_IJQ_BANKA_CLIENT”、列“ID”中。

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

4

3 回答 3

2

外键意味着给定的键必须指向“外部”表中的有效记录,因此如果它为空,则表示失败。无法为不存在的客户端创建记录。

于 2013-01-24T18:29:35.710 回答
0

您试图在具有外键约束的表中插入一行。例如,如果我有两张表employees 和e_numbers。e_numbers 只有数字,但员工有来自 e_numbers 的数字以及员工的名字和姓氏,此外,员工的外键是 e_numbers 表中的数字。我无法在没有相应行的员工中插入一行e_numbers。看看哪一列是外键,看看它在说什么表。在运行此插入语句之前,请确保该表中有一行。

于 2013-01-24T18:33:53.010 回答
0

以下是根据您发布的信息的猜测。为了让我们充分回答这个问题,您需要提供更多信息——INSERT 语句实际上是什么样的,表之间的关系是什么(获取表定义/模式)等等。

该错误可能是由于插入的表上的列(根据发布的有限信息,我猜它类似于“BankAccount”)被定义为另一个表的外键(再次猜测它类似于“BankClient ") 在另一个表的“ID”列上。

实际上,它定义了 BankClient 和 BankAccount 之间的父子关系(“一对多”)。因此,具有给定 ID 的 BankClient 可以有许多 BankAccounts,每个 BankAccounts 通过“ID”列与它的 BankClient 相关联。所以我希望 BankAccount 表有一些类似于“BankClientID”或类似内容的列。

这意味着为了向“BankAccount”表中插入一条记录,它的“BankClientID”字段必须有一个值,并且该值必须存在于“BankClient”记录的“ID”列中。希望有帮助。

于 2013-01-24T18:36:19.677 回答