2

这是我第一次使用 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) - 未找到父键

这是我在研究中发现的:

对于插入语句,当您尝试插入没有匹配父项的子项时,此 ORA-02291 错误很常见,如外键约束所定义。在这种情况下,您需要将父行添加到表中,然后重新插入子表行。

这是否意味着表VALUE='ind'中不存在ATTR_TYPE

4

1 回答 1

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
于 2012-07-11T22:12:35.483 回答