SQL:使用类似Enum的属性创建表,该属性是仅有的几种类型之一

时间:2014-03-03 11:33:02

标签: sql enums attributes

SQL是否具有OR或|等效的属性类型,它们只是少数可能性中的一种(即Enum类型)?

使用我对下表中status属性的最佳猜测的示例:

CREATE TABLE Rental (
       status ("open" | "closed"),
       date datetime,
       id int PRIMARY KEY
)

我希望状态为“开放”或“关闭”,没有别的。是否有这种语法,或者我应该使用CHAR(6)还是应该使用约束?

2 个答案:

答案 0 :(得分:1)

CREATE TABLE Rental (
       status char(6),
       date datetime,
       id int PRIMARY KEY
Check (status='open' OR status='closed')
)

最好存储状态如int(1-开,0 - 关闭,等等)

答案 1 :(得分:1)

您可以在定义表时使用检查约束来缩小属性的域。

CREATE TABLE Rental (
       status char(6),
       date datetime,
       id int PRIMARY KEY
);

alter table Rental 
  add constraint status_valid_value
  check (status is null or (status in ('open','closed')));