【问题标题】:SQL SVR 08 R2 Limit a field to specific valuesSQL SVR 08 R2 将字段限制为特定值
【发布时间】:2012-09-22 10:11:21
【问题描述】:

例如,假设我有“性别”字段,并且我只想允许值男性、女性或中性。这在 SQL Server 管理工作室中可行吗?

更新:到目前为止,解决方案指向“检查约束”功能,可以通过右键单击所需的列来找到该功能。

不过,我还是遇到了语法错误。关于我应该如何输入约束的任何想法?

答案:原来我只需要像这样输入它

Gender = 'Male' OR Gender = 'Female' OR Gender = 'Unisex'

【问题讨论】:

    标签: sql sql-server database sql-server-2008 tsql


    【解决方案1】:

    与 MySQL 不同,MSSQL 没有 ENUM 数据类型。您唯一能做到的就是将值捕获在应用程序级别。或者通过使用CHECK 约束

    ColumnName varchar(10) 
    CHECK(ColumnName IN ('Male', 'Female', 'Unisex')) 
    DEFAULT 'Unisex'
    

    【讨论】:

    • 或者将枚举保存为 tinyint 并检查数值范围。
    • 我找到了允许您定义检查约束的选项,但我不断收到验证错误。
    • @Zizo47,如果您遇到错误,请编辑您的问题并发布全文错误。不要试图放在评论里,代码和cmets相处的不是很好
    【解决方案2】:

    您可以执行以下操作: - 创建另一个表并创建从主表到性别的一对多关系。 - 创建一个类似下面的约束:

    CREATE TABLE Person
    (
       Id int NOT NULL,
       Gender varchar(200)
       CONSTRAINT chk_Gender CHECK (Gender IN ('Male', 'Unisex', 'Female'))
    )
    

    【讨论】:

    • 这行得通,但我不喜欢用这样的静态表填充我的数据库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2012-03-23
    • 2015-08-23
    相关资源
    最近更新 更多