1. 程式人生 > >Oracle-主鍵約束、唯一約束與外來鍵約束

Oracle-主鍵約束、唯一約束與外來鍵約束

          1.主鍵約束: 一個表只能有一個主鍵約束。主鍵可以是單個欄位,也可以是多個欄位。無論是哪種情況,其所有欄位都是NOT NULL。
           2.Unique約束:一個表可以有多個Unique約束,Unique的欄位可以為NULL。
           3.主鍵與Unique:不同點在於一個表只能有一個主鍵約束,但是可以有多個Unique約束;主鍵所有欄位都是not null,unique可以是null。相同點在於都能保證唯一性。
           4.主鍵、Unique與索引:主鍵約束與Unique約束預設會成為索引。當主鍵和Unique有多個欄位時,有索引字首性問題,即where語句中的條件必須有主鍵或者unique的第一個欄位,否則不會使用索引。
          5. 外來鍵與主鍵、Unique:外來鍵必須為另外一張表(父表)的主鍵或者唯一索引。如果要新增記錄,而父表中沒有則報錯。反之,如果要刪除父表中的記錄,而子表中有記錄,也會報錯。但是如果在建立外來鍵約束時,如果使用on delete cascade,則刪除父表中資料時,不報錯而直接把子表關聯的資料刪除。
           如果要刪除父表,則需要加上cascade constraints,此時子表的foreign key被去除,表中記錄保持不變。