2013-03-04 58 views
0

我正在使用PGAdminIII数据库。创建具有引用另一个表的外键的表

我已经一个表命名STOCKREGISTER其中包含复合主键由三个字段组成,即stockregisterId,的applicationID和日期

我要创建另一个表STOCK具有引用该领域的外键字段stockregisterId STOCKREGISTER。如果我想创建STOCK表,错误消息是shown.The错误信息是“没有独特的contraint匹配的引用表STOCKREGISTER键”。什么又迈进了一步我接下来就

这第一张表

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 
) 
下面

是第二table.Here我不能让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

请分享您试图使用的模式和代码 – DevelopmentIsMyPassion 2013-03-04 08:57:53

+0

哪个版本的Sql服务器是这样的? – DevelopmentIsMyPassion 2013-03-04 12:52:16

回答

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) 
) 
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表中的stock_register_id PK似乎不存在问题。根据错误消息中的名称STOCKREGISTER,我怀疑它没有在您的第二条Create语句中找到表stock_register

相关问题