簡體   English   中英

如何創建此FOREIGN KEY? - Postgres

[英]How do I create this FOREIGN KEY? - Postgres

我有2張桌子。 我正在嘗試創建一個FORIEGN KEY 這是我的第一張表:

CREATE TABLE bills(
 id   serial,
 name  varchar(100),
 payment  decimal(12, 2),
 payoff  decimal(12, 2),
 type  varchar(25)
)

當我嘗試創建第二個表時:

CREATE TABLE pay_dates(
 id serial,
 bill_id integer REFERENCES bills(id),
 due_date date,
 pay_date date,
 paid  boolean
)

我收到此錯誤:

ERROR: there is no unique constraint matching given keys for referenced table "bills"

我究竟做錯了什么?

引用的列必須是唯一的。 您應該將id聲明為主鍵:

CREATE TABLE bills(
 id   serial primary key,
...

必須聲明主鍵(或唯一)約束是顯式的。 類型serial僅確保默認值是序列中的下一個值。 例:

create table test (val1 serial, val2 serial);
insert into test (val2) values (1), (2), (default), (3), (4), (default);
select * from test;

 val1 | val2
------+------
    1 |    1
    2 |    2
    3 |    1
    4 |    3
    5 |    4
    6 |    2
(6 rows)

父表bill(id)必須具有唯一或主鍵約束。

導致錯誤的原因是:沒有唯一約束匹配引用表的給定鍵?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM