0

外部キーに問題があります。奇妙な問題です。

最初のテーブル:

CREATE TABLE adjunto
(
  id serial NOT NULL,
  codigo text,
  descripcion text,
  usuario integer,
  file integer,
  nombre text,
  propiedades hstore,

  CONSTRAINT adjunto_pkey PRIMARY KEY (id ),
  CONSTRAINT adjunto_file_fkey FOREIGN KEY (file)
      REFERENCES file (file_id) MATCH SIMPLE 
      ON UPDATE NO ACTION ON DELETE CASCADE
) WITH (
  OIDS=FALSE
);

2 番目のテーブル:

CREATE TABLE adjunto_coleccion_privada
(
  id serial NOT NULL,
  adjunto integer,
  coleccion integer,
  CONSTRAINT adjunto_coleccion_privada_pkey PRIMARY KEY (id ),
  CONSTRAINT adjunto_coleccion_privada_adjunto_fkey FOREIGN KEY (adjunto)
  REFERENCES adjunto (id) MATCH SIMPLE
  ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT adjunto_coleccion_privada_coleccion_fkey FOREIGN KEY (coleccion)
  REFERENCES coleccion (id) MATCH SIMPLE
  ON UPDATE NO ACTION ON DELETE CASCADE
)
WITH (
  OIDS=FALSE
);

指示:

INSERT INTO adjunto_coleccion_privada (adjunto, coleccion) 
VALUES (600, 2) RETURNING id

値 600 と 2 は、adjunto と colecion の両方のテーブルに存在します。

詳細なエラー:

Mensaje: ERROR: insert or update on table "adjunto_coleccion_privada" 
                violates foreign key   
                constraint "adjunto_coleccion_privada_adjunto_fkey"
Detail: Key (adjunto)=(600) is not present in table "adjunto".
4

1 に答える 1

1

コードをテストしました(adjunto_coleccion_privada_coleccion_fkey貼り付けたコードに参照されたテーブルが存在しないため、制約を削除しました)。

全く問題ありません。

テーブルにid=600のレコードがあることを本当に確信していますか?adjunto

于 2012-07-17T20:53:26.860 に答える