ITPub博客

首页 > 数据库 > Oracle > oracle约束constraint

oracle约束constraint

Oracle 作者:sd13176128666 时间:2013-11-27 15:59:25 0 删除 编辑

Oracle约束按约束状态又可分为disable novalidate,disable validate,enable novalidate,enable validate. 其中disable/enable代表是否启用约束,validate/novalidate代表启用约束时是否对表中原有数据作检查。

1.创建表

 create table t1(

                id number,

                name varchar2(20));

  insert into t1 values(1,'A');

  insert into t1 values(1,'B');
 commit

2.添加约束条件(约束条件很多,check,NOT NULL 等) 准备在下篇中详细介绍

 alter table t1 add constraint pk_t1 primary key (id)  deferrable enable novalidate;

   此时主键已经生效,但源表中包含不符合约束的数据

3.如果将约束状态更改为 enable validate,却发现原有数据有问题

   alter table t1 enable validate constraint pk_t1;(会报错)

4.建立一个异常表(这两种都可以的)

 

SQL>@D:/oracle/product/10.2.0/db_1/RDBMS/ADMIN/utlexpt1.sql

create table exceptions(row_id rowid,

owner varchar2(30),

table_name varchar2(30),

constraint varchar2(30));

5.然后将异常数据插入异常表

alter table t1 enable validate constraint pk_t1 exceptions into exceptions;

6.根据对应表找出对应的异常数据进行修改

select id,name from t1 where rowid in(

            select row_id from exceptions) FOR UPDATE;

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23230192/viewspace-1116573/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-01-23