2012-07-11 98 views
2

这是我第一次使用Oracle。oracle完整性约束

我手动插入东西到DB:

insert into ATTR_TYPE_VALUE (ATTR_TYPE_ID, VALID_VALUE, CREATED_BY) 
(select ATTR_TYPE_ID, 'Ad', 2 from ATTR_TYPE where VALUE = 'ind') 

而且我得到了以下错误:

ERROR at line 1: ORA-02291: integrity constraint (LO.ATTR_TYPE_VALUE_FK02) violated - parent key not found

这里是我发现在研究:

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

这是否表示ATTR_TYPE表中不存在VALUE='ind'

+0

你想要插入的所有值是什么?我不确定这是否是正确的语法。提供两个表的模式。 – 2012-07-11 22:04:29

回答

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 
+2

这是一个_gasp_隐式连接;)? – Ben 2012-07-11 22:42:35

+3

@Ben - 当你挖掘出你在恐龙漫游地球时编写的查询时,你会得到这样的结果,并且不支持SQL 99连接语法。 :-) – 2012-07-11 22:44:27

相关问题