这是我第一次使用Oracle。
我手动将一些东西插入数据库:
insert into ATTR_TYPE_VALUE (ATTR_TYPE_ID, VALID_VALUE, CREATED_BY)
(select ATTR_TYPE_ID, 'Ad', 2 from ATTR_TYPE where VALUE = 'ind')
我收到以下错误:
第1行的错误:ORA-02291:完整性约束 违反了(LO.ATTR_TYPE_VALUE_FK02) - 未找到父密钥
以下是我在研究中发现的内容:
对于insert语句,当您尝试插入没有匹配父项的子项时,此ORA-02291错误很常见,如外键约束所定义。在这种情况下,您需要将父行添加到表中,然后重新插入子表行。
这是否意味着VALUE='ind'
表中不存在ATTR_TYPE
?
答案 0 :(得分:3)
您定义了哪些列ATTR_TYPE_VALUE_FK02
以及您引用了哪些表和列?
SELECT fk_columns.table_name,
fk_columns.column_name,
fk_columns.position,
pk_columns.table_name,
pk_columns.column_name,
pk_columns.position
FROM all_constraints fk_constraint,
all_cons_columns fk_columns,
all_cons_columns pk_columns
WHERE fk_constraint.owner = 'LO'
AND fk_constraint.constraint_name = 'ATTR_TYPE_VALUE_FK02'
AND fk_constraint.owner = fk_columns.owner
AND fk_constraint.constraint_name = fk_columns.constraint_name
AND fk_constraint.r_owner = pk_columns.owner
AND fk_constraint.r_constraint_name = pk_columns.constraint_name