首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle检查constraint1

Oracle检查constraint1
EN

Stack Overflow用户
提问于 2014-08-01 03:59:35
回答 1查看 69关注 0票数 0

我在表x中有一个包含数据的列Hire_date

代码语言:javascript
复制
01-jun-98

16-aug-99

02-feb-09

01-mar-06
-

01-dec-08

17-mar-99

16-feb-07

我被要求在该Hire_date列上创建一个检查约束。检查hire_date是否在2000年之后。我看到一个错误,我再次尝试检查hire_date是否在1996年之后。已成功创建约束。为什么我在为hire_date>2000创建检查约束时看到错误?

代码:

代码语言:javascript
复制
alter table x
add constraint check_hire_date check(hire_Date>'01-jan-2000')  

获取错误

代码语言:javascript
复制
alter table x
add constraint check_hire_date check(hire_Date>'01-jan-1996')  

成功

EN

回答 1

Stack Overflow用户

发布于 2014-08-01 09:42:21

你出错的原因是显而易见的。您的某些数据违反了约束。当您向表添加约束时,它将验证该约束的所有数据。

您可以使用novalidate选项跳过验证。如果在创建约束时应用novalidate选项,则可以在不使用约束验证旧(=当前)日期的情况下添加约束。约束将影响在创建约束后插入的数据。

代码语言:javascript
复制
sql> create table x (hire_date date);
sql> insert into x values ('1998-01-01');
sql> insert into x values ('2000-01-05');

sql> select * from x;

HIRE_DAT
--------
98/01/01
00/01/05

sql> alter table x add constraint d_check check 
  2  (hire_date >= to_date('2000-01-01', 'yyyy-mm-dd'))
  3  novalidate;

sql> insert into x values ('1999-01-01');

insert into x values ('1999-01-01')
*
error at line 1:
check constraint (d_check check) violated
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25067904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档