Oracle 外鍵的相關(guān)約束中級(jí)聯(lián)刪除的方案
SQL和 Oracle 外鍵的相關(guān)約束中的級(jí)聯(lián)刪除。我們?cè)谙嚓P(guān)的系統(tǒng)中如果你要?jiǎng)h除相關(guān)記錄,我們就要關(guān)聯(lián)一起刪除N多張表,同時(shí)它們之間還存在著相互約束的關(guān)系.所以考慮到在創(chuàng)建表時(shí)加上約束關(guān)系。
詳細(xì)內(nèi)容如下:
SQL的Oracle外鍵約束可以實(shí)現(xiàn)級(jí)聯(lián)刪除與級(jí)聯(lián)更新;Oracle 則只充許級(jí)聯(lián)刪除。
SQL級(jí)聯(lián)刪除與級(jí)聯(lián)更新使用格式:
- CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20))
- CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT)
Oracle 級(jí)聯(lián)刪除使用格式:
- CREATE TABLE A001(ID INT PRIMAY KEY,NAME VARCHAR2(20))
- CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE,AGE NUMBER(2,0))
- CREATE TABLE groups
- (
- id VARCHAR2(16) CONSTRAINT pk_groupid PRIMARY KEY,
- name VARCHAR2(32),
- description VARCHAR2(50)
- )
- TABLESPACE userspace;
- CREATE TABLE usringrp
- (
- group_id VARCHAR2(16) CONSTRAINT fk_uing_grpid
- REFERENCES groups(id)
- ON DELETE CASCADE,
- user_id VARCHAR2(16)
- )
- TABLESPACE userspace;
- PowerDesigner
參照完整性約束
限制(Restrict)。不允許進(jìn)行修改或刪除操作。若修改或刪除主表的主鍵時(shí),如果子表中存在子記錄,系統(tǒng)將產(chǎn)生一個(gè)錯(cuò)誤提示。這是缺省的參照完整性設(shè)置。
置空(Set Null)。如果Oracle外鍵列允許為空,若修改或刪除主表的主鍵時(shí),把子表中參照的外鍵列設(shè)置為空值(NULL)。
置為缺省(Set Default)。如果指定了缺省值,若修改或刪除主表的主鍵時(shí),把子表中參照的Oracle外鍵設(shè)置為缺省值(Default)。
級(jí)聯(lián)(Cascade)。把主表中主鍵修改為一個(gè)新的值時(shí),相應(yīng)修改子表中Oracle外鍵的值;或者刪除主表中主鍵的記錄時(shí),要相應(yīng)刪除子表中外鍵的記錄。
注意:在Oracle 中建立好的constraint (包括primay key,foreign key) 如果要修改,必須先alter table drop contraint con_name;然后再重新add constraint
【編輯推薦】