程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> oracle主鍵的設置方法

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被去除,表中記錄保持不變。
    外鍵:

    外鍵是該表是另一個表之間聯接的字段
    外鍵必須為另一個表中的主鍵
    外鍵的用途是確保數據的完整性。它通常包括以下幾種:
    實體完整性,確保每個實體是唯一的(通過主鍵來實施).

    oracle主鍵的設置方法有2種:
    一種是設置自增長主鍵,另一種是生成唯一序列;
    1.自增長主鍵

    SQL> create table Prim_key_Increase_Test(
    2 id number(10) primary key,
    3 name varchar2(30)
    4 );

    表已創建。

    SQL> create sequence Prim_key_Incre_Sequence
    2 minvalue 1
    3 nomaxvalue
    4 start with 1
    5 increase by 1
    6 nocycle
    7 nocache;
    increase by 1
    *
    第 5 行出現錯誤:
    ORA-00933: SQL 命令未正確結束


    SQL> 5
    5* increase by 1
    SQL> c /increase/increment/
    5* increment by 1
    SQL> r
    1 create sequence Prim_key_Incre_Sequence
    2 minvalue 1
    3 nomaxvalue
    4 start with 1
    5 increment by 1
    6 nocycle
    7* nocache

    序列已創建。

    SQL> create trigger Prim_key_trigger before
    2 insert on Prim_key_Increase_Test for each row
    3 begin
    4 select Prim_key_Incre_Sequence.nextval into:New.id from dual;
    5 end;
    6 /

    觸發器已創建

    SQL> commit;

    提交完成。

    SQL> insert into Prim_key_Increase_Test(id) values('181');

    已創建 1 行。

    SQL> select * from Prim_key_Increase_Test;

    ID NAME
    ---------- ------------------------------
    1

    SQL> insert into Prim_key_Increase_Test(id) values('181');

    已創建 1 行。

    SQL> insert into Prim_key_Increase_Test(id) values('181');

    已創建 1 行。

    SQL> select * from Prim_key_Increase_Test;

    ID NAME
    ---------- ------------------------------
    1
    2
    3

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