如何约束表中的属性以仅允许值介于1-10之间? 这是到目前为止的声明..不知道如何使OfficeNumber只接受该间隔中的值
CREATE TABLE OfficeStaff(
EID INT PRIMARY KEY,
OfficeNumber INT NOT NULL
);
答案 0 :(得分:3)
使用check
约束:
CREATE TABLE OfficeStaff (
EID INT PRIMARY KEY,
OfficeNumber INT NOT NULL,
CHECK (OfficeNumber BETWEEN 1 AND 10)
);
但请注意,还有另一种可能更好的方法。您应该有一个OfficeNumbers
表,其中包含有效的办公室号码。然后,您可以使用外键关系来强制执行编号,而无需对数字进行硬编码。
答案 1 :(得分:1)
您可以将域用于此目的:
create domain mydomain as integer check(value between 1 and 10)
create table mytable(id serial primary key, md mydomain not null)
- 这两个会成功
insert into mytable(md) values(1)
insert into mytable(md) values(2)
- 那个会失败
insert into mytable(md) values(12)
错误:域mydomain的值违反了检查约束“mydomain_check”
**********错误**********
错误:域mydomain的值违反了检查约束“mydomain_check”
可在此处找到更多信息:http://www.postgresql.org/docs/9.1/static/sql-createdomain.html
答案 2 :(得分:0)
您可以为定义添加constraints。在这种情况下,您可以添加
CHECK (OfficeNumber BETWEEN 1 AND 10)