我正在使用PGAdminIII数据库。
我有一个名为 STOCKREGISTER 的表,其中包含由三个字段组成的复合主键,即 stockregisterId,applicationId和date 。
我必须创建另一个表 STOCK ,其中有一个外键字段,引用 STOCKREGISTER 字段 stockregisterId 。如果我正在尝试创建 STOCK 表,显示错误消息。错误消息“没有唯一的约束匹配键,用于引用的表STOCKREGISTER”。接下来我需要采取的另一个步骤< / p>
这第一张表
CREATE TABLE stock_register
(
stock_register_id bigint NOT NULL,
application_id bigserial NOT NULL,
production_date date NOT NULL,
opening_bal bigint DEFAULT 0,
quantity_produced bigint,
total_quantity bigint
CONSTRAINT primarykey PRIMARY KEY (stock_register_id, application_id, production_date),
CONSTRAINT "foreignKey" FOREIGN KEY (application_id)
REFERENCES application (application_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
下面是第二个表。我不能将 stock_register_id 作为外键
CREATE TABLE Stock
(
stock_id bigint NOT NULL,
stock_register_id bigint,
dimension bigserial NOT NULL,
CONSTRAINT "stockid" PRIMARY KEY (stock_id)
)
答案 0 :(得分:0)
我猜语法应该是:
CREATE TABLE Stock
(
stock_id bigint NOT NULL,
stock_register_id bigint,
dimension bigserial NOT NULL,
CONSTRAINT "stockid"
FOREIGN KEY (stock_id)
REFERENCES stock_register (stock_register_id)
)
答案 1 :(得分:0)
CREATE TABLE Stock
(
stock_id bigint NOT NULL,
stock_register_id bigint,
dimension bigserial NOT NULL,
CONSTRAINT primaryKey PRIMARY KEY (stock_id),
CONSTRAINT foreignKey FOREIGN KEY(stock_register_id)
REFERENCES stock_register (stock_register_id)
)
这应该是你需要的一切。使用外键时,您还必须确保数据库表引擎,排序规则和字符集匹配。
对于唯一约束问题,stock_register_id
表中的stock_register
PK似乎没有问题。基于错误消息中的名称STOCKREGISTER,我怀疑它没有在您的第二个Create语句中找到表stock_register
。