例如,我需要一个名为“频率”(varchar) 的列,该列仅接受“每日”、“每周”、“每月”、“每年”作为可能值
创建表时可以在 SQL Server Management Studio 中设置吗?
check constraint
来限制值?比如:
CREATE TABLE SomeTable
(
Id int NOT NULL,
Frequency varchar(200),
CONSTRAINT chk_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
)
检查约束。
CHECK 约束确定有效值 从不是的逻辑表达式 基于另一列中的数据。为了 例如,a 的值范围 工资栏可以限制为 创建一个 CHECK 约束 仅允许数据范围为 15,000 美元到 100,000 美元。这 阻止输入工资 超出正常工资范围。你想要这样的东西:
ALTER TABLE dbo.Table ADD CONSTRAINT CK_Table_Frequency
CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
您还可以使用标量函数实现检查约束,如上面的链接中所述,这就是我更喜欢的方式。
右键单击 -> 检查约束 -> 添加 -> 在表达式字段中输入类似 Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')
的内容,并在(名称)字段中输入一个好的约束名称。你完成了。
ENUM
,如下所示:
Frequency ENUM('Daily', 'Weekly', 'Monthly', 'Yearly')