插入表时出错

时间:2013-01-24 18:27:44

标签: sql sql-server sql-server-2005

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

  

INSERT语句与FOREIGN KEY约束冲突   " OSFRK_OSUSR_ijq_BANK_ACCOUNT_OSUSR_IJQ_BANKA_CLIENT_CLIENT_ID&#34 ;.该   数据库" BANCDEV",表中发生冲突   " dbo.OSUSR_IJQ_BANKA_CLIENT",列' ID'。

表是空的,没有任何行,原因是什么?如果我在选择插入时执行TOP 1,则仍会出现错误。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您尝试在具有外键约束的表中插入行。例如,如果我有两个表雇员和e_numbers。 e_numbers只有数字,但是员工拥有e_numbers中的数字以及员工的名字和姓氏,另外员工的外键是e_numbers表中的数字。我无法在没有相应行的员工中插入行。 e_numbers。查看哪个列是外键并查看它正在讨论的表。在运行此insert语句之前,请确保该表中有一行。

答案 2 :(得分:0)

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

该错误很可能是因为插入的表上的列(从发布的有限信息,我猜它会像“BankAccount”)被定义为另一个表的外键(再次,猜测它是什么比如“BankClient”)在另一个表的“ID”列上。

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

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