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
);

第二张表:

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 回答