Oracle中唯一約束和唯一索引的區別

來源:互聯網
上載者:User

在使用TOAD來操作Oracle資料庫時,會注意到建立約束時有Primary Key、Check、Unique和Foreign Key四種類型的約束,這與SQL Server中的約束沒有什麼區別,這裡的Check約束除了用於一般的Check約束外,在Oracle中也用於非空約束的實現。也就是說如果一個欄位不允許為空白,則系統將會建立一個系統的Check約束,該約束定了某欄位不可為空。

除了約束,還有另外一個概念是索引,在TOAD中建立索引的介面如下:

我們可以注意到在唯一性組中有三個選項:不唯一、唯一和主鍵。那麼建立索引時的唯一、主鍵與建立約束時候的唯一約束和主鍵約束有什麼區別呢?

這裡的可能容易產生誤解,其實建立主鍵的結果是一樣的,不管是在建立約束時建立還是建立索引時建立,都會建立一個主鍵約束和對應的一個唯一索引。

建立唯一約束與建立唯一索引有所不同:

  • 建立唯一約束會在Oracle中建立一個Constraint,同時也會建立一個該約束對應的唯一索引。
  • 建立唯一索引只會建立一個唯一索引,不會建立Constraint。

也就是說其實唯一約束是通過建立唯一索引來實現的。對於前端開發人員來說這兩者有什麼區別嗎?好像沒有。都是不能插入重複的值。在刪除時這兩者也有一定的區別,刪除唯一約束時可以只刪除約束而不刪除對應的索引,所以對於的列還是必須唯一的,而刪除了唯一索引的話就可以插入不唯一的值。

初學Oracle個人淺薄之見,若有錯,還望大家見諒。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.