一、创建唯一性约束:
alter table 表名 add constraint 约束名称 unique (列名1、列名2..)
查表:
SQL> desc customer;
Name Type Nullable Default Comments
---------------- ------------ -------- ------- --------
CUSTOMER_ID NUMBER
CUSTOMER_NAME VARCHAR2(20) Y
CUSTOMER_PHONE VARCHAR2(20) Y
CUSTOMER_ADDRESS VARCHAR2(50) Y
添加唯一性约束:
创建唯一约束sql语句SQL> alter table customer add constraint unq_customer unique (customer_name,customer_phone);
二、修改唯一性约束:
1.删除
alter table customer drop constraint unq_customer;
2.重命名
alter table customer rename constraint unq_customer to unq_cst;
3.禁用、启用
alter table 表名 disable/enable constraint 约束名称;
三、特殊类唯一性约束
Oracle 定义条件使用多字段唯一性约束的方法
CREATE UNIQUE INDEX idx_ut ON t(NVL2(NULLIF(b,3),a,NULL),NVL2(NULLIF(b,3),b,NULL),NVL2(NULLIF(b,3),c,NULL));
解析:
当 b=3 时,NULLIF(b,3) 则返回null值, 即NVL2(NULLIF(b,3),a,NULL), 返回的是null值,同理,另外两个NVL2的表达式也是返回null值,因此,三个字段都认为是null值,所以可以允许插入;
当 b<>3 时,NULLIF(b,3)则返回 b 值,即NVL2(NULLIF(b,3),a,NULL),返回的值是a字段的值,同理,另外两个NVL2的表达式返回的分别是b,c字段的值,这时候进行判断是否符合唯一性约束。
即可。
因此,oracle可以通过定义某些简单的条件进行定义唯一性约束。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论