oracle 培训笔记 约束

本文详细介绍了SQL中的各种约束类型,包括primarykey、notnull、foreignkey、check和unique等,并通过实例演示了如何设置这些约束以及它们的状态管理和操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

约束分类:

primary key
not null
foreign key
check
unique

--查询约束状态
drop table t01 purge;
create table t01(id number primary key,name varchar2(20));
select * from user_constraints;
status
deferrable
deferred
validated

延迟
deferrable:可延迟,检查方式:immediate,deferred

--约束可延迟,立即检查
create table t01(id number primary key deferrable
,name varchar2(20));

insert into t01 values(1,'a');
insert into t01 values(1,'b');

--约束可延迟,延迟到提交检查
create table t02(id number primary key deferrable initially deferred
,name varchar2(20));

insert into t02 values(1,'a');
insert into t02 values(1,'b');
commit;

--查看表t01,t02,t03主键带索引
create table t03(id number primary key
,name varchar2(20));

select * from user_indexes;
uniqueness

约束状态
enable disable
validate novalidate

enable validate: 启用约束,校验数据(新,旧)
enable novalidate:启用约束,校验数据(新)
disable novalidate:停用约束
disable validate:停用约束,

--向有主键表中插入重复数据
步骤1:让主键约束对应的索引一定非唯一
  办法1:建主键时指定deferrable
   create table t01(id number primary key deferrable ,name varchar2(20));
  办法2:加主键前先建一个非唯一索引,然后加主键
   create table t01(id number,name varchar2(20));
   create index t01i on t04(id);
   alter table t01 add constraint t04i primary key(id);

步骤2:禁用约束
alter table t01 modify constraint xxxx disable;
insert into t01 values(1,'a');
insert into t01 values(1,'b');
commit;

步骤3:启用约束,但不校验已存在数据
alter table t01 modify constraint SYS_C002990 enable novalidate;
select * from t01;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值