pgAdmin - 尝试创建外键时“引用”不提供任何选项

时间:2011-07-12 01:51:57

标签: postgresql pgadmin

我有三个表:ModelingAgency.clientsModelingAgency.modelsModelingAgency.Bookings。所有三个表都有一个名为id的主键列。

bookings有两列引用clientsmodels。在pgAdmin中,当我尝试在bookings中创建外键到clientsmodels时,我会看到以下屏幕:

Screen One

Screen Two

我在这里俯瞰什么?我是PostgreSQL的新手(这是我的第一个使用PostgreSQL的测试项目 - 我一直使用MySQL,偶尔使用SQL Server)所以它可能是显而易见的(我只是看不到它)。

编辑:根据要求,这是DDL:

-- Table: "ModelingAgency.bookings"

-- DROP TABLE "ModelingAgency.bookings";

CREATE TABLE "ModelingAgency.bookings"
(
  id integer NOT NULL DEFAULT nextval('"ModelingAgency.Bookings_id_seq"'::regclass),
  "clientId" integer NOT NULL,
  "modelId" integer NOT NULL,
  "time" timestamp with time zone NOT NULL DEFAULT now(),
  "location" character varying(100) NOT NULL DEFAULT 'No Location Selected'::character varying,
  CONSTRAINT "bookingId" PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "ModelingAgency.bookings" OWNER TO "MyBatisTutorial";


-- Table: "ModelingAgency.clients"

-- DROP TABLE "ModelingAgency.clients";

CREATE TABLE "ModelingAgency.clients"
(
  id integer NOT NULL DEFAULT nextval('"ModelAgency.clients_id_seq"'::regclass),
  "name" character varying(45) NOT NULL,
  CONSTRAINT "clientId" PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "ModelingAgency.clients" OWNER TO "MyBatisTutorial";


-- Table: "ModelingAgency.models"

-- DROP TABLE "ModelingAgency.models";

CREATE TABLE "ModelingAgency.models"
(
  id serial NOT NULL,
  "name" character varying(45) NOT NULL,
  CONSTRAINT "modelId" PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "ModelingAgency.models" OWNER TO "MyBatisTutorial";

1 个答案:

答案 0 :(得分:3)

查看您发布的DDL代码,我发现您的表名称编写错误(导致您的问题与pgAdmin一起):

"ModelingAgency.bookings"

格式应为"schema"."tableName"

"ModelingAgency"."bookings"

之后,对象浏览器看起来像这样(可能需要先使用pgAdmin或CREATE SCHEMA SQL语句创建模式):

enter image description here

这是工作的DDL代码(我省略了OIDSOWNER TO之类的内容,但这与您的情况无关,BTW OIDS默认为false):

DROP TABLE IF EXISTS  "ModelingAgency"."bookings";
CREATE TABLE "ModelingAgency"."bookings"
(
    id serial,
    "clientId" integer NOT NULL,
    "modelId" integer NOT NULL,
    "time" timestamp with time zone NOT NULL DEFAULT now(),
    "location" character varying(100) NOT NULL
        DEFAULT 'No Location Selected'::character varying,
    CONSTRAINT "bookingId" PRIMARY KEY (id)
);

DROP TABLE IF EXISTS "ModelingAgency"."clients";
CREATE TABLE "ModelingAgency"."clients"
(
    id serial,
    "name" character varying(45) NOT NULL,
    CONSTRAINT "clientId" PRIMARY KEY (id)
);

DROP TABLE IF EXISTS "ModelingAgency"."models";
CREATE TABLE "ModelingAgency"."models"
(
    id serial NOT NULL,
    "name" character varying(45) NOT NULL,
    CONSTRAINT "modelId" PRIMARY KEY (id)
)