我有一张桌子,叫做我正在创建的Staff。我有专栏:
斯塔夫诺
名字
名字
位置

出生日期
薪水
布兰奇诺
目前,我在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));

我想将其设置为只有经理、助理或主管才能插入该列。对于性,我希望M或F也一样。有谁能提供一个这样做的例子?

最佳答案

您可以使用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),则更灵活。

关于postgresql - 在Postgres中设置规则以在列中输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26834276/

10-11 01:19