Oracle 惟一性约束

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle 惟一性约束

惟一性约束强调所在的列不允许有相同的值。但是,它的定义比主键约束弱,即它所在的列允许空值。UNIQUE约束的主要作用是在保证除主键列外、其他列值的惟一性。

在一个表中,根据实际情况可能有多个列的数据都不允许存在相同值。例如,在EMPLOYEES表中的EMAIL等列是不允许重复的,但是由于在一个表中最多只能有一个主键约束存在,那么如何解决这种多个列都不允许重复数据存在的问题?这就是惟一性约束的作用。

例如,下面的语句重新定义了EMPLOYEES表,并为该表的EMIL列定义名为EMP_UK 的惟一性约束:

SQL> create table employees(

2 empno number(10) primary key,

3 ename varchar2(20) not null,

4 sex char(2),

5 salary number(8,2),

6 hiredate date default sysdate,

7 job varchar2(10),

8 email varchar2(50) constraint emp_uk unique,

9 deptno number(3) not null);

表已创建。

前面曾介绍过,UNIQUE约束可以保证列中不存在重复的值,但是可以插入多个NULL 值。下面的示例将试图在EMPLOYEES表的EMAIL列添加两行NULL值:SQL> insert into employees(empno,ename,email,deptno)

2 values(1220,'刘丽',null,10);

已创建 1 行。

SQL> insert into employees(empno,ename,email,deptno)

2 values(1221,'王丽',null,10);

已创建 1 行。

为了防止向UNIQUE约束列添加NULL值,可以在该列上再添加NOT NULL约束。在向UNIQUE约束列添加NOT NULL约束后,其功能基本上就相当于主键PRIMARY KEY 约束。

使用ALTER TABLE语句添加UNIQUE约束的语句形式如下:

alter table table_name

add constraint constraint_name unique (column1[,column2]);

同样,使用ALTER TABLE语句也可以删除UNIQUE约束。例如,下面的语句删除创建的UNIQUE约束EMP_UK:

SQL> alter table employees

2 drop constraint emp_uk;

相关文档
最新文档