在使用toad來操作oracle資料庫時,會注意到建立限制時有primary key、check、unique和foreign key四種類型的限制,這與sql server中的限制沒有什麼差別,這裡的check限制除了用于一般的check限制外,在oracle中也用于非空限制的實作。也就是說如果一個字段不允許為空,則系統将會建立一個系統的check限制,該限制定了某字段不能為空。
除了限制,還有另外一個概念是索引,在toad中建立索引的界面如下:
我們可以注意到在唯一性組中有三個選項:不唯一、唯一和主鍵。那麼建立索引時的唯一、主鍵與建立限制時候的唯一限制和主鍵限制有什麼差別呢?
這裡的可能容易産生誤解,其實建立主鍵的結果是一樣的,不管是在建立限制時建立還是建立索引時建立,都會建立一個主鍵限制和對應的一個唯一索引。
建立唯一限制與建立唯一索引有所不同:
建立唯一限制會在oracle中建立一個constraint,同時也會建立一個該限制對應的唯一索引。
建立唯一索引隻會建立一個唯一索引,不會建立constraint。
也就是說其實唯一限制是通過建立唯一索引來實作的。對于前端開發人員來說這兩者有什麼差別嗎?好像沒有。都是不能插入重複的值。在删除時這兩者也有一定的差別,删除唯一限制時可以隻删除限制而不删除對應的索引,是以對于的列還是必須唯一的,而删除了唯一索引的話就可以插入不唯一的值。
初學oracle個人淺薄之見,若有錯,還望大家見諒。