ORACLE級聯刪除

轉自 http://hi.baidu.com/j2eespace/blog/item/ae5f89afb117acfffbed501e.html

 

最近軟件系統中要刪除一條記錄,就要關聯到同時刪除好多張表,他們之間還存在着約束關係.所以考慮到在創建表時加上約束關係,具體如下:

SQL的外鍵約束可以實現級聯刪除與級聯更新;

ORACLE則只充許級聯刪除。

SQL級聯刪除與級聯更新使用格式:
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級聯刪除使用格式:
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)。不允許進行修改或刪除操作。若修改或刪除主表的主鍵時,如果子表中存在子記錄,系統將產生一個錯誤提示。這是缺省的參照完整性 設置。
置空(Set Null)。如果外鍵列允許爲空,若修改或刪除主表的主鍵時,把子表中參照的外鍵列設置爲空值(NULL)。
置爲缺省(Set Default)。如果指定了缺省值,若修改或刪除主表的主鍵時,把子表中參照的外鍵設置爲缺省值(Default)。
級聯(Cascade)。把主表中主鍵修改爲一個新的值時,相應修改子表中外鍵的值;或者刪除主表中主鍵的記錄時,要相應刪除子表中外鍵的記錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章