講解SQL與Oracle外鍵約束中的級聯刪除

這篇論壇文章(賽迪網技術社區)主要介紹了SQL與Oracle外鍵約束中的級聯刪除,更多內容請參考下文:

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

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)。把主表中主鍵修改爲一個新的值時,相應修改子表中外鍵的值;或者刪除主表中主鍵的記錄時,要相應刪除子表中外鍵的記錄。

 
Oracle入門——SQL查看CHECK約束信息
  以下兩個語句均基于系統表sysobjects、syscomments和系統視圖sysconstraints,查詢結果中包括表ID、表名、列ID、列名、CHECK約束ID、CHECK約束名、CHECK約束status值以及CHECK約束的內容,TCCView爲Table-Column...查看完整版>>Oracle入門——SQL查看CHECK約束信息
 
Oracle入門——SQL查看CHECK約束信息
  以下兩個語句均基于系統表sysobjects、syscomments和系統視圖sysconstraints,查詢結果中包括表ID、表名、列ID、列名、CHECK約束ID、CHECK約束名、CHECK約束status值以及CHECK約束的內容,TCCView爲Table-Column...查看完整版>>Oracle入門——SQL查看CHECK約束信息
 
J2EE程序中的SQL語句自動構造方法講解
INSERT、DELETE、UPDATE 三種SQL語句是數據庫技術的三大基本語句。 在通常的web開發中對它的處理可以說是無處不在. 如果簡單的都用手工來構造這些SQL語句的話, 一方面給我們的開發帶來很大的工作量, 另一方面系統靈...查看完整版>>J2EE程序中的SQL語句自動構造方法講解
 
教你如何收集Oracle進程中的SQL跟蹤信息
在診斷數據庫系統性能的過程中,總會涉及到跟蹤效率低下的SQL語句,現在就如何跟蹤SQL語句來做一個簡單的總結。 假如我們可以修改應用系統的源代碼,則可以直接在程序中加入如下的語句: 1)alter session set timed...查看完整版>>教你如何收集Oracle進程中的SQL跟蹤信息
 
如何收集Oracle進程中的sql跟蹤信息
在診斷數據庫系統性能的過程中,總會涉及到跟蹤效率低下的sql語句,現在就如何跟蹤sql語句來做一個簡單的總結。權做抛磚引玉之用。 假如我們可以修改應用系統的源代碼,則可以直接在程序中加入如下的語句: 1)alter...查看完整版>>如何收集Oracle進程中的sql跟蹤信息