如何对列施加约束,使其只能包含以下值?你怎么称呼这种类型的约束?
Allowed values: "yes", "no" or "maybe"
Column Data Type: nvarchar(5)
DBMS: SQL Server 2008
如何对列施加约束,使其只能包含以下值?你怎么称呼这种类型的约束?
Allowed values: "yes", "no" or "maybe"
Column Data Type: nvarchar(5)
DBMS: SQL Server 2008
是的,检查一个约束是你需要的。您可以在表声明中声明检查约束:
CREATE TABLE test(
_id BIGINT PRIMARY KEY NOT NULL,
decision NVARCHAR(5),
CHECK (decision in ('yes','no','maybe'))
);
使用枚举表是一种方法。
2021 年,我想知道我们是否可以用另一种方式来做到这一点(与检查约束相比,不一定是更好的方式)。
对于只允许“yes”、“no”或“maybe”值的列,也许我们可以有一个位类型的列,然后在它旁边有一个计算列
Create Table xxx (
ColumnName bit null,
ColumnNameDerived varchar(10) as
case ColumnName
when 0 then 'no'
when 1 then 'yes'
else 'maybe'
end
)
对于具有更多可能值的列,可以选择 tinyint 类型,然后使用“<= 10”之类的检查约束。假设一列有 10 个可能的值,那么约束“< 10”就可以了。
所以约束不会太长而无法阅读,并且您立即知道有多少可能的值。这也有助于节省存储空间。