Sql 创建属性必须在1-10(Postgres)范围内的表
如何将表中的属性约束为仅允许值介于1-10之间? 这是目前为止的声明。。不知道如何使OfficeNumber仅接受该间隔内的值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
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,检查就足够了,但这对我将来肯定有用:)