Unique約束
Unique約束可應用于一列或多列字段上。如果字段值存在,必須為唯一的,可以取null值
1、一張表只能有一個PK約束但可以有多個Unique約束
2、作為PK的字段不能為null,但作為Unique的字段可以為null,但不為null的行必須是Unique的
3、當創(chuàng)建一個PK時,創(chuàng)建一個Index,創(chuàng)建一個Unique時也創(chuàng)建一個Index
4、PK和Unique約束字段可以作為FK的父親。FK約束字段引用PK約束,也引用Unique約束
創(chuàng)建語句:
CREATE TABLE temp (pk NUMBER PRIMARY KEY, a NUMBER, b NUMBER);
ALTER TABLE temp ADD CONSTRAINT uk_temp_a_b UNIQUE (a, b);
Example:
CREATE TABLE students
(student_id VARCHAR2(10) NOT NULL,
student_name VARCHAR2(30) NOT NULL,
college_major VARCHAR2(15) NOT NULL,
status VARCHAR2(15) NOT NULL,
state VARCHAR2(2),
license_no VARCHAR2(30)) TABLESPACE student_data;
ALTER TABLE students
ADD CONSTRAINT pk_students PRIMARY KEY (student_id)
USING INDEX TABLESPACE student_index;
ALTER TABLE students
ADD CONSTRAINT uk_students_license
UNIQUE (state, license_no)
USING INDEX TABLESPACE student_index;
ALTER TABLE students
ADD CONSTRAINT ck_students_st_lic
CHECK ((state IS NULL AND license_no IS NULL) OR
(state IS NOT NULL AND license_no is NOT NULL));