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 に答える