【问题标题】:query about check constraint [closed]关于检查约束的查询[关闭]
【发布时间】:2017-12-29 05:04:29
【问题描述】:

想写一个接受值的检查约束(在创建表时) 在 2 个日期之间,例如 ('25-oct-94' 到 '10-may-16')

【问题讨论】:

  • 您使用的是哪个数据库?
  • 天哪...哪个vendor 是您的数据库,例如SQL Server、Oracle 等?
  • 数据库管理系统?甲骨文? MySQL?
  • @AnkitBajpai MySQL 不支持检查约束 AFAIK。
  • @TimBiegeleisen AFAIK 更糟糕的是......它不会抱怨它们,但也不会强制执行它们。让开发人员认为他们没问题,因为 create 或 alter 语句已成功完成,但随后忽略了检查约束,这当然可能导致数据损坏......

标签: sql oracle check-constraint


【解决方案1】:

由于您使用的是Oracle,因此您可以使用CHECK 约束表示

CONSTRAINT check_dates
  CHECK (my_date_column BETWEEN date '1994-10-25' AND date '2016-05-10')

您的查询(如评论)应如下所示

 create table dob5 ( birthdate date not null, 
                    CONSTRAINT check_dates 
                    CHECK (birthdate BETWEEN date '1994-10-25' AND date '2016-05-10') );

看这个演示小提琴http://sqlfiddle.com/#!4/779f9

【讨论】:

  • 它给出了错误@Rahul:-“在 CHECK 约束中错误地指定了日期或系统变量”创建表 dob5(生日日期,CONSTRAINT check_dates CHECK(生日在 '25-oct-94' AND '10- may-16') ) 这就是我尝试的方式
  • ?你在吗?
  • @PrashantTendulkar,如果有帮助,请参阅答案中的编辑
  • @PrashantTendulkar - 你得到了那个错误,因为你没有像 Rahul 展示的那样创建约束。您错过了 date 关键字,这在声明日期文字时至关重要。
【解决方案2】:

请检查一下。

创建表 t

(your_columnnm 日期

检查(日期'1994-10-25'和日期'2016-05-10'之间的your_columnnm));

【讨论】:

  • 你能告诉我使用检查约束查询 sql 接受小于 2000 年的日期吗?
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
相关资源
最近更新 更多