sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 开发DBA >

学习笔记:Oracle约束 汇总DBA常用5种约束的创建 修改命令方法及案例

时间:2016-06-23 22:33   来源:Oracle研究中心   作者:惜分飞   点击:

天萃荷净 oracle之约束,汇总开发DBA工作中对Oracle数据库5种约束的管理命令,如:创建约束、修改约束、删除约束的命令方法

一、not null不为空约束创建和修改命令

--创建表是直接指定
 create table orders(
 order_num number(4) constraint nn_orader_num not null,
 order_date date not null,
 product_id number);
--创建表后修改
alter table orders modify product_id not null;

二、check检查约束创建和修改命令

--创建表时直接指定
 create table bouns(
 emp_id number not null,
 salary number(9,2) check(salary>500),
 bonus number(9,2),
 constraint ck_bonus check(bonus>100));
--创建表后修改
alter table bouns add constraint ck_bonus2 check(bonus

三、unique唯一约束创建和修改命令

--最简单的创建
create table f3(id number unique);
--多列的索引
create table f4(id number,
name varchar2(20),
pwd varchar2(20),
constraint unique_f4 unique(id,pwd));
--添加unique和指定index相关信息
alter table fei
add constraint uq_fei_1np unique(id,pwd)
using index tablespace users
storage(initial 32k next 32k pctincrease 0) nologging;
--添加一列,包括unique
alter table fei add abc varchar2(11) constraint un_abc unique;
--删除unique
alter table d drop unique(id) cascade;--cascade可选(外键时强制删除)

四、primar key主键约束创建和修改命令

--最基本的primary key
create table f5(id number primary key);
--主键为多列的情况
create table f6(id number,name varchar2(22),
constraint pk_f6 primary key(id,name));
--直接index的相关信息
create table f7(id number,name varchar2(20),
pwd varchar2(20),constraint pk_f7 primary key(id,pwd)
using index tablespace users
storage(initial 64k next 64k) nologging)
tablespace abc;
alter table a drop primary key cascade;--删除主键(外键时强制删除)

五、foreign key外键约束创建和修改命令

--最简单的foreign key
create table a(id number primary key,name varchar2(10));
 create table b(id number references a(id));
--修改表的方式添加foreign key
create table c(id number,name varchar2(10));
alter table c add constraint fk_c foreign key(id) references a(id) on delete cascade;
--note:外键的三种删除方式:delete no action(default,如果外键中存在,主键中不能被删除)
--delete cascade(如果删除主键,强制删除外键中的内容)
--delete set null(删除主键,外键中内容变为null)
alter table c drop constraint fk_c;--删除外键约束

六、约束条件disable

alter table c add constraint pk_c  primary key(id) disable;
--noet:在创建条件后面加上disable
alter table c enable constraint pk_c;--启用约束性关系

七、(disable/enable)与(validate/novalidate)组成的约束的四种状态

alter table a enable validate primary key;--(new、old数据都要检查)
alter table a enable novalidate primary key;--(new数据都要检查)
alter table a disable validate primary key;--(只读状态)
alter table a disable novalidate primary key;--(new、old数据都不检查)
select constraint_name,status,validated from user_constraints;--查询所属状态
--note:从disable novalidate状态转换为其他状态时,要考虑隐藏的unique index的存在

八、deferred延迟检查

alter table fei add constraint pk_fei primary key(id) deferrable;
set constraint pk_fei deferred;--或者set constraints all deferred;
--note:1)设置为deferrable时,如果建立隐形index则为NONUNIQUE
--2)建立constraint时,默认情况下是立即检查,而不是等到commit时检查
--3)如果没有set设置,默认还是为immediate(立即执行)

九、oracle约束状态转换冲突数据统计

--建立统计数据表
create table exceptions(row_id urowid,
 owner varchar2(30),
 table_name varchar2(30),
 constraint varchar2(30));
--创建表
create table t(id number primary key disable,name char(20));
--转换状态语句后面加exceptions into exceptions
alter table t enable validate primary key exceptions into exceptions;
--查看冲突数据
select rowid,id,name from t where rowid in (select row_id from exceptions);
 

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之学习笔记:Oracle约束 汇总DBA常用5种约束的创建 修改命令方法及案例

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/505.html

Oracle研究中心

关键词:

Oracle约束

汇总DBA常用5种约束的创建 修改命令方法及案例

主键与外键约束创建和修改命令

唯一、不为空和检查约束的创建和修改方法