我正在执行存储过程,但它总是抛出此错误:
INSERT语句与FOREIGN KEY约束冲突 " OSFRK_OSUSR_ijq_BANK_ACCOUNT_OSUSR_IJQ_BANKA_CLIENT_CLIENT_ID&#34 ;.该 数据库" BANCDEV",表中发生冲突 " dbo.OSUSR_IJQ_BANKA_CLIENT",列' ID'。
表是空的,没有任何行,原因是什么?如果我在选择插入时执行TOP 1,则仍会出现错误。
答案 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”列中。 希望有所帮助。