【问题标题】:SQL constraint minvalue / maxvalue?SQL约束最小值/最大值?
【发布时间】:2009-11-15 05:02:33
【问题描述】:

有没有办法为数值字段设置 SQL 约束,最小值应为 1234,最大值应为 4523?

【问题讨论】:

    标签: sql constraints


    【解决方案1】:

    the check constraint 的 SQL Server 语法:

    create table numbers (
        number int not null
            check(number >= 1234 and number <= 4523),
        ...
    )
    
    create table numbers (
        number int not null,
        check(number >= 1234 and number <= 4523),
        ...
    )
    
    create table numbers (
        number int not null,
        constraint number_range_check
            check(number >= 1234 and number <= 4523),
        ...
    )
    

    【讨论】:

    • 下面的链接对我很有帮助:technet.microsoft.com/en-us/library/ms179491.aspx.
    • 当存在间接处理它的约束时,为什么要检查 Not Null?我错过了什么吗?
    • 向现有列添加约束:ALTER TABLE Tbl ADD CONSTRAINT ChkTable_Field CHECK (Field BETWEEN 1234 AND 4523)
    【解决方案2】:
    CREATE TABLE WhatEver
    (
        ...
        NumericField INTEGER NOT NULL CHECK(NumericField BETWEEN 1234 AND 4523),
        ...
    );
    

    请注意,“BETWEEN AND”提供的范围包括引用的限值。

    【讨论】:

      【解决方案3】:

      如果您使用的是 SQL Server,您希望使用这样的 CHECK 约束:

      CREATE TABLE foo (
        someint INT NOT NULL CHECK (someint >= 1234 AND someint <= 4523)
      )
      

      【讨论】:

        【解决方案4】:

        仅供参考

        当你需要一个值范围的约束时:

        ALTER TABLE package_subscription ADD CONSTRAINT check_discount_amount CHECK (discount_amount BETWEEN 0.0000 AND 1.0000);
        

        【讨论】:

        • 这些约束是包容性的还是排斥性的?
        【解决方案5】:

        如果您通过 SQL Server Management Studio 使用 SQL Server,添加 Check Constraint 最方便的方法是右键单击树视图(对象资源管理器)中的 Constraints 文件夹,然后从弹出菜单中选择新约束。

        会弹出一个检查约束窗口,其中包含一个名为 CK_tableName* 的新空约束

        您可以编辑这样的建议名称,并在表达式字段中插入检查约束的代码。

        然后新约束出现在对象资源管理器的约束文件夹中(在您选择文件夹并点击刷新图标后),您可以右键单击它并从弹出菜单中选择修改来编辑它。

        【讨论】:

          猜你喜欢
          • 2022-11-27
          • 1970-01-01
          • 1970-01-01
          • 2021-08-17
          • 2015-04-23
          • 1970-01-01
          • 2019-03-12
          • 2018-07-08
          • 1970-01-01
          相关资源
          最近更新 更多