oracle 培训笔记 约束

约束分类:

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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值