【问题标题】:How do I script SQL constraint for a number to fall within a range?如何编写 SQL 约束以使数字落在某个范围内?
【发布时间】:2010-09-27 18:45:59
【问题描述】:

使用 SQL Server,如何编写对表中字段的约束脚本,使值的可接受范围在 0 到 100 之间?

【问题讨论】:

    标签: sql sql-server sql-server-2000


    【解决方案1】:

    在我看来,正确的问题不是“如何”而是“为什么”。

    在我看来,这条 0-100 规则听起来像是一条商业规则。为什么要在服务器/数据库端实现?如果输入了不正确的值,谁会收到错误消息?

    如果用户收到错误消息,在事务到达服务器之前让代码给他消息不是更容易吗?

    范围修改呢?规则可以改变吗?我想是的:规则总是会改变。范围可以从0-100更新到101-200吗?在这种情况下,数据库中已经输入的值呢?

    【讨论】:

    • @Phillippe Grondier:由于愚蠢的人为错误或有时难以弄清楚或重现的复杂系统错误,您会惊讶地看到大中型组织的数据库服务器上存在大量不良数据.您在企业中拥有的创新越多,将不良数据注入数据库的机会就越大。如果您愿意拥有一个一致的数据库,只需在数据库模式中实施必要的检查。如果用户收到错误消息会发生什么?很多事情,除了将坏数据插入数据库。
    【解决方案2】:

    试试:

    ALTER TABLE myTableName
    ADD CONSTRAINT myTableName_myColumnName_valZeroToOneHundred
    CHECK (myColumnName BETWEEN 0 AND 100)
    

    此检查将包含在内 - 以下是 MSDN 中有关 BETWEEN 的一些信息: BETWEEN (Transact SQL)

    【讨论】:

      【解决方案3】:

      应该使用“fieldname BETWEEN 0 AND 100”之类的检查约束。

      【讨论】:

        【解决方案4】:
        ALTER TABLE Table
        ADD CONSTRAINT CK_Table_Column_Range CHECK (
           Column >= 0 AND Column <= 100 --Inclusive
        )
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-21
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多