【问题标题】:Sql table adding constraint to check for number limitSql表添加约束以检查数量限制
【发布时间】:2013-01-22 11:38:17
【问题描述】:

我正在 oracle DB 中创建一个表并尝试添加约束,以便列中允许的数字为 1、2、3。

CREATE TABLE "TABLE_EXAMPLE"
(
.
.
"PROTOCOL" NUMBER (1,2,3),

....)

CONSTRAINT "CH1"
        CHECK ("PROTOCOL" BETWEEN 1 AND 3),

我做得对还是有更好的方法?

【问题讨论】:

  • Oracle 中没有number(1,2,3) 数据类型。
  • 但我见过 NUMBER (0,1) 数据类型
  • NUMBER(0,1) 不是枚举。它是位数和精度。
  • @Plouf! number(0, 1) 是完全错误的声明,因为数字精度不能为零。
  • +1 用于添加约束,非常好的数据库风格!

标签: sql oracle ddl check-constraint


【解决方案1】:
CREATE TABLE TABLE_EXAMPLE 
(
 ...
  PROTOCOL NUMBER(1) NOT NULL CONSTRAINT CH1 CHECK (PROTOCOL IN (1,2,3))
 ...
);

BETWEEN 1 AND 3包括1.5、1.6等

我建议不要使用引号 ",除非表或列名中有特殊字符...

【讨论】:

【解决方案2】:

如果您要检查表级别,检查约束是最好的方法。因为如果你插入更大的值,那么检查约束会抛出错误。

【讨论】:

    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多