Oracle unique約束的創(chuàng)建步驟
以下的文章主要是講述Oracle中創(chuàng)建unique***約束 (單列和多列)的實際操作方案,Oracle unique約束其實就是用來保證其表里的某一類,或是使表中的某一類組合起來時不重復的一種手段。
我們在可以在創(chuàng)建表時或者創(chuàng)建好后通過修改表的方式來創(chuàng)建Oracle unique約束。
下面是一些創(chuàng)建unique約束的例子:
- create table unique_test
- (id number,
- fname varchar2(20),
- lname varchar2(20),
- address varchar2(100),
- email varchar2(40),
- constraint name_unique unique(fname,lname))
在這里我們建立了一個表unique_test,并將其中的fname和lname組合起來建立了Oracle中創(chuàng)建unique***約束。
我們也還可以在表創(chuàng)建完成后手動的通過修改表的方式來增加約束,例如:
- alter table unique_test
- add constraint email_unique unique(email);
下面我們來往表里面插入數(shù)據(jù),
- insert into unique_test(id,fname,lname) values(1,’德華’,'劉’)
這一行可以正常的被插入
因為我們在建立表時曾把fname和lname聯(lián)合起來作為一個約束,因為如果我們希望再次插入劉德華,
- insert into unique_test(id,fname,lname) values(2,’德華’,'劉’)
是會出現(xiàn)如下錯誤的:
ORA-00001: 違反***約束條件 (SYS.NAME_UNIQUE)
但我們?nèi)绻臑槿缦轮担?/p>
- insert into unique_test(id,fname,lname) values(2,’學友’,'張’);
又可以正常插入了。
有些朋友可能會有疑問,我們不是為email也建立的一個***約束嗎?為什么這兩行數(shù)據(jù)都沒有為email列賦值,也就是或兩行的email列都是空值,而插入也成功了呢?
這是因為一個空值(null)的含義是該列當前的狀態(tài)是不存在,他永遠不可能會與另外一個空值相等。所以也就不存在違反***約束之說了。
以上的相關(guān)內(nèi)容就是對創(chuàng)建表時或者創(chuàng)建好后通過修改表的方式來創(chuàng)建Oracle unique約束的介紹,望你能有所收獲。
【編輯推薦】