Sql 创建属性必须在1-10(Postgres)范围内的表

Sql 创建属性必须在1-10(Postgres)范围内的表,sql,postgresql,Sql,Postgresql,如何将表中的属性约束为仅允许值介于1-10之间? 这是目前为止的声明。。不知道如何使OfficeNumber仅接受该间隔内的值 CREATE TABLE OfficeStaff( EID INT PRIMARY KEY, OfficeNumber INT NOT NULL ); 使用检查约束: CREATE TABLE OfficeStaff ( EID INT PRIMARY KEY, OfficeNumber INT NOT NULL, CHECK

如何将表中的属性约束为仅允许值介于1-10之间? 这是目前为止的声明。。不知道如何使OfficeNumber仅接受该间隔内的值

CREATE TABLE OfficeStaff(
    EID INT PRIMARY KEY,
    OfficeNumber INT NOT NULL
); 

使用
检查
约束:

CREATE TABLE OfficeStaff (
    EID INT PRIMARY KEY,
    OfficeNumber INT NOT NULL,
    CHECK (OfficeNumber BETWEEN 1 AND 10)
); 
不过,请注意,还有另一种可能更好的方法。您应该有一个带有有效办公室号码的
OfficeNumbers
表。然后,您可以使用外键关系来强制编号,而无需硬编码编号。

您可以添加定义。在这种情况下,您可以添加

CHECK (OfficeNumber BETWEEN 1 AND 10)

您可以为此目的使用域:

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\u检查”

**********错误**********

错误:域mydomain的值违反检查约束“mydomain\u检查”


更多信息可以在这里找到:

非常感谢我所需要的:)Thx,检查就足够了,但这对我将来肯定有用:)