在Postgres中设置规则以在Column中输入

时间:2014-11-09 22:54:02

标签: postgresql

我有一个名为Staff的表我正在创建。我有专栏:

  • staffNo
  • FNAME
  • L-NAME
  • 位置
  • DOB
  • 薪水
  • branchNo

目前,我在postgres命令行中的条目是:

CREATE TABLE Staff(
         staffNo     TEXT CONSTRAINT firstkey PRIMARY KEY,
         fname       TEXT NOT NULL,
         lname       TEXT NOT NULL,
         position    TEXT NOT NULL,
         sex         CHAR(1) NOT NULL,
         DOB         DATE NOT NULL,
         salary      INT NOT NULL,
         FOREIGN KEY (branchNo) REFERENCES Branch(branchNo));

我想设置它,以便对于位置,只能将Manager,Assistant或Supervisor插入该列。对于性爱,我希望同样适用于M或F.任何人都可以提供一个如何做到这一点的例子吗?

1 个答案:

答案 0 :(得分:4)

您可以使用check约束来实现此目的:

CREATE TABLE Staff(
     staffNo     TEXT CONSTRAINT firstkey PRIMARY KEY,
     fname       TEXT NOT NULL,
     lname       TEXT NOT NULL,
     position    TEXT NOT NULL,
     sex         CHAR(1) NOT NULL,
     DOB         DATE NOT NULL,
     salary      INT NOT NULL,
     FOREIGN KEY (branchNo) REFERENCES Branch(branchNo),
     CHECK((position = 'Manager' or position = 'Assistant' or position = 'Supervisor') 
     AND (sex = 'F' OR sex = 'M')));

但如果你从其他表中引用这些常量(或许是position_table

,它会更灵活