程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle unique約束的創建步驟

Oracle unique約束的創建步驟

編輯:Oracle數據庫基礎

以下的文章主要是講述Oracle中創建unique唯一約束 (單列和多列)的實際操作方案,Oracle unique約束其實就是用來保證其表裡的某一類,或是使表中的某一類組合起來時不重復的一種手段。

我們在可以在創建表時或者創建好後通過修改表的方式來創建Oracle unique約束。

下面是一些創建unique約束的例子:

  1. create table unique_test  
  2. (id number,  
  3. fname varchar2(20),  
  4. lname varchar2(20),  
  5. address varchar2(100),  
  6. email varchar2(40),  
  7. constraint name_unique unique(fname,lname))  

在這裡我們建立了一個表unique_test,並將其中的fname和lname組合起來建立了Oracle中創建unique唯一約束。

我們也還可以在表創建完成後手動的通過修改表的方式來增加約束,例如:

  1. alter table unique_test  
  2. add constraint email_unique unique(email);  

下面我們來往表裡面插入數據,

  1. insert into unique_test(id,fname,lname) values(1,’德華’,'劉’) 

這一行可以正常的被插入

因為我們在建立表時曾把fname和lname聯合起來作為一個約束,因為如果我們希望再次插入劉德華,

  1. insert into unique_test(id,fname,lname) values(2,’德華’,'劉’) 

是會出現如下錯誤的:

ORA-00001: 違反唯一約束條件 (SYS.NAME_UNIQUE)

但我們如果改為如下值:

  1. insert into unique_test(id,fname,lname) values(2,’學友’,'張’); 

又可以正常插入了。

有些朋友可能會有疑問,我們不是為email也建立的一個唯一約束嗎?為什麼這兩行數據都沒有為email列賦值,也就是或兩行的email列都是空值,而插入也成功了呢?

這是因為一個空值(null)的含義是該列當前的狀態是不存在,他永遠不可能會與另外一個空值相等。所以也就不存在違反唯一約束之說了。

以上的相關內容就是對創建表時或者創建好後通過修改表的方式來創建Oracle unique約束的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved