所谓唯一性约束(unique constraint)不过是数据表内替代键的另一个名称而已。替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。
唯一性约束用来确保列值的唯一性,通过在列级别使用UNIQUE关键字来实现。一般情况下,在为列指定主键之后,Oracle会自动为列设置唯一性约束,唯一性约束的定义语法如下:
column_name data_type CONSTRAINT constraint_name UNIQUE
例如图书管理系统有一个图书分类表,这个表要求图书分类名称不能重复,为此在创建Cate_Name列时,可以通过UNIQUE指定一个唯一性约束,如下代码所示:
CREATE TABLE bookCategory
(
Cate_Id NUMBER, --图书分类Id
Cate_Name VARCHAR2(200), --图书分类名称,该名称要求唯一
Cate_Description VARCHAR(1000), --图书分类描述
CONSTRAINT CateId_pk PRIMARY KEY (Cate_Id), --主键
CONSTRAINT Cate_Name_uq UNIQUE (Cate_Name) --唯一性约束
)
该表创建之后,如果使用如下的语句向表中插入两个相同的分类名称,SQL*Plus将跳出错误提示信息:
SQL> INSERT INTO bookCategory VALUES(1,'计算机应用','关于软件程序设计相关的书籍');
已创建1行
SQL> INSERT INTO bookCategory VALUES(2,'计算机应用','关于计算机设计相关的书籍');
INSERT INTO bookCategory VALUES(2,'计算机应用','关于计算机设计相关的书籍')
*
第1行出现错误:
ORA-00001: 违反唯一约束条件 (SCOTT.CATE_NAME_UQ)
转载于:https://blog.51cto.com/laoyaowst/1209617