oracle 建表創建外鍵


1、默認的創建方式
在刪除被參照的數據時,將無法刪除。

Sql代碼   收藏代碼
  1. CREATE TABLE T_INVOICE  
  2. (ID NUMBER(10) NOT NULL,  
  3. INVOICE_NO VARCHAR2(30) NOT NULL,  
  4. CONSTRAINT PK_INVOICE_ID PRIMARY KEY(ID));  
  5.   
  6. CREATE TABLE T_INVOICE_DETAIL  
  7. (ID NUMBER(10) NOT NULL,  
  8. AMOUNT NUMBER(10,3),  
  9. PIECE NUMBER(10),  
  10. INVOICE_ID NUMBER(10),  
  11. CONSTRAINT PK_DETAIL_ID PRIMARY KEY(ID));  
  12. ALTER TABLE T_INVOICE_DETAIL  
  13. ADD CONSTRAINT FK_INVOICE_ID  
  14. FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID);  


2、級聯刪除
    外鍵語法有個選項可以指定級聯刪除特征。這個特征僅作用於父表的刪除語句。使用這個選項,父表的一個刪除操作將會自動刪除所有相關的子表記錄

Sql代碼   收藏代碼
  1. ALTER TABLE T_INVOICE_DETAIL  
  2. ADD CONSTRAINT FK_INVOICE_ID  
  3. FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID)  
  4. ON DELETE CASCADE;  


    如果不能級聯刪除,可設置子表外鍵字段值為null,使用on delete set null語句(外鍵字段不能設置not null約束).

Sql代碼   收藏代碼
  1. ALTER TABLE T_INVOICE_DETAIL  
  2. ADD CONSTRAINT FK_INVOICE_ID  
  3. FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID)  
  4. ON DELETE SET NULL;  


三、參照字段語法結構
    創建外鍵約束是,外鍵字段參照父表的主鍵或Unique約束字段。這種情況下可以不指定外鍵參照字段名,如下:

Sql代碼   收藏代碼
  1. ALTER TABLE T_INVOICE_DETAIL  
  2. ADD CONSTRAINT FK_INVOICE_ID  
  3. FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE;  


    當沒有指定參照字段時,默認參照字段是父表的主鍵。
    如果外鍵字段參照的是Unique而非Primary Key字段,必須在add constraint語句中指定字段名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM