天天看點

唯一限制唯一限制

唯一限制

唯一限制的特點是在某一個列上的内容不允許出現重複,例如:現在要收集使用者資訊,假設包含編号、姓名、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;
           
唯一限制唯一限制

是以,進行資料表的建立時,限制一定要設定名字。限制的名字絕對不能重複。