溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫中創建unique唯一約束

發布時間:2020-07-04 14:28:41 來源:網絡 閱讀:1041 作者:java程序猿 欄目:數據庫

   最近項目中的需求,確定唯一一條數據,原來貌似碰到過,忘記了,現在記錄一下。實現唯一約束還可以不是主鍵的unique。


   oracle中的unique約束是用來保證表中的某一類,或者表中的某一類組合起來不重復的一種手段。我們在可以在創建表時或者創建好后通過修改表的方式來創建oracle中的unique約束。

  下面是一些創建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組合起來建立了一個唯一約束。

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

  alter table unique_test

  add constraint email_unique unique(email);

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

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

  這一行可以正常的被插入

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

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

  是會出現如下錯誤的:

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

  但我們如果改為如下值:

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

  又可以正常插入了。

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

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女