我有一个名为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));
我想设置它,以便对于位置,只能将Manager,Assistant或Supervisor插入该列。对于性爱,我希望同样适用于M或F.任何人都可以提供一个如何做到这一点的例子吗?
答案 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
)