唯一限制
唯一限制的特點是在某一個列上的内容不允許出現重複,例如:現在要收集使用者資訊,假設包含編号、姓名、email郵箱,很明顯email的資料不可能重複,是以就可以使用UNIQUE限制完成。
範例:使用唯一限制
範例:儲存正确的資料
INSERT INTO member(mid,name,email) values (5,'貂蟬',[email protected]);
範例:儲存重複的資料
INSERT INTO member(mid,name,email) values (6,'魯班',[email protected]);

此時的代碼出現了錯誤,錯誤提示為:
違反唯一限制條件(SCOTT.SYS_C0011856)
在Oracle之中限制本身也稱為一個對象,隻要你設定了限制,Oracle會自動建立與之相關的限制對象資訊。既然是對象,那麼所有的對象都會在資料字典之中進行儲存,使用者的限制的資料字典應該使用:
user_constains。
範例:查詢user_constains資料字典
select owner,constraint_name,table_name from user_constraints;
可以發現“user_constraints”資料字典隻是告訴使用者限制屬于那張表,并沒有告訴使用者限制具體屬于哪個列,此時利用另外一個資料字典:“user_cons_columns”
範例:查詢"user_cons_columns"資料字典
select owner,constraint_name,table_name,column_name from user_cons_columns;
唯一限制并不能像非空限制那樣,可以很明确的告訴使用者是哪個列上出現問題,可以采用“限制簡寫_字段”,例如:唯一限制的簡寫是:“UK”,那麼現在是在email字段上設定了唯一限制,是以可以使用“uk_email”來作為限制的名字,如果要指定名字,則必須在限制建立的時候完成,利用:CONSTRAINT關鍵字定義。
範例:建立唯一限制,同時設定限制名稱
--删除資料表
DROP TABLE member PURGE;
--清空資源回收筒
PURGE RECYCLEBIN;
--建立資料表
CREATE TABLE member(
mid NUMBER,
name VARCHAR2(20) NOT NULL,
eamil VARCHAR2(20),
CONSTRAINT uk_email UNIQUE(email)
);
--測試資料
INSERT INTO member(mid,name) values (1,'韓信');
INSERT INTO member(mid,name) values (2,'李白');
--送出事務
COMMIT;
是以,進行資料表的建立時,限制一定要設定名字。限制的名字絕對不能重複。