如何创建此FOREIGN KEY? - Postgres

时间:2015-06-21 02:31:28

标签: postgresql

我有2张桌子。我正在尝试创建import scalaz.std.list._ import scalaz.std.either._ import scalaz.syntax.monadPlus._ val el : List[Either[Int, String]] = List(Left(1), Right("Success"), Left(42)) scala> val (lefts, rights) = el.separate lefts: List[Int] = List(1, 42) rights: List[String] = List(Success) 。这是我的第一张表:

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 )

我做错了什么?

2 个答案:

答案 0 :(得分:2)

引用的列必须是唯一的。您应该将id声明为主键:

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)

主键(或唯一)约束必须声明为显式。类型serial仅确保默认值是序列中的下一个值。例如:

import pandas as pd

pd.DataFrame({'job': ['a', 'a', 'b', 'b', 'c'], 'gender':['M', 'F', 'M', 'F', 'M'], 'income':[300, 200, 450, 400, 350]})

Out[3]: 
  gender  income job
0      M     300   a
1      F     200   a
2      M     450   b
3      F     400   b
4      M     350   c

答案 1 :(得分:1)