設定dept表deptno列為主鍵。
成都創(chuàng)新互聯(lián)成立與2013年,我們提供高端網站建設、成都小程序開發(fā)、電商視覺設計、重慶APP軟件開發(fā)及網絡營銷搜索優(yōu)化服務,在傳統(tǒng)互聯(lián)網與移動互聯(lián)網發(fā)展的背景下,我們堅守著用標準的設計方案與技術開發(fā)實力作基礎,以企業(yè)及品牌的互聯(lián)網商業(yè)目標為核心,為客戶打造具商業(yè)價值與用戶體驗的互聯(lián)網+產品。
alter table dept add constraint pk_deptno primary key (deptno);
在emp表deptno列上建立外鍵引用dept表deptno,指定外鍵類型為級聯(lián)刪除。
alter table emp add constraint fk_deptno foreign key (deptno) references dept(deptno) on delete cascade;
這樣刪除dept表 只需:delete from dept where city='shanghai'; 就可以自動刪除對應emp表內容。
系統(tǒng)中要刪除一條記錄,就要關聯(lián)到同時刪除好多張表,它們之間還存在著約束關系.所以考慮到在創(chuàng)建表時加上約束關系,詳細內容如下:
SQL的外鍵約束可以實現級聯(lián)刪除與級聯(lián)更新;
ORACLE則只充許級聯(lián)刪除。
SQL級聯(lián)刪除與級聯(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級聯(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
參照完整性約束
來源:() - SQL與Oracle外鍵約束中的級聯(lián)刪除_點點_新浪博客
限制(Restrict)。不允許進行修改或刪除操作。若修改或刪除主表的主鍵時,如果子表中存在子記錄,系統(tǒng)將產生一個錯誤提示。這是缺省的參照完整性設置。
置空(Set Null)。如果外鍵列允許為空,若修改或刪除主表的主鍵時,把子表中參照的外鍵列設置為空值(NULL)。
置為缺省(Set Default)。如果指定了缺省值,若修改或刪除主表的主鍵時,把子表中參照的外鍵設置為缺省值(Default)。
級聯(lián)(Cascade)。把主表中主鍵修改為一個新的值時,相應修改子表中外鍵的值;或者刪除主表中主鍵的記錄時,要相應刪除子表中外鍵的記錄。
注意:在oracle中建立好的constraint (包括primay key,foreign key) 如果要修改,必須先alter table drop contraint con_name;然后再重新add constraint
如果關聯(lián)的兩個表一條信息同時刪除,可用下列方法。
設關聯(lián)的外鍵是ID,先設定外鍵類型為級聯(lián)刪除。
alter table B add constraint fk_ID foreign key (ID) references A(ID) on delete cascade;
然后delete from A where ID=nnnn; 就可以自動刪除對應B表內容了。
你這個寫法有問題,oracle不允許這樣刪除,如果想級聯(lián)刪除有兩個方法實現:方法一:觸發(fā)器解決,方法二:修改你的外鍵設置,達到級聯(lián)刪除的目的。如果不用級聯(lián)刪除的話就只有一個表一個表的刪除,先刪除contactcomm表再刪除contact 表。
SELECT ID, createdate
FROM ( SELECT ID,
createdate,
RANK( ) OVER( PARTITION BY ID ORDER BY createdate DESC ) rank_value
FROM test1 )
WHERE rank_value = 2;
DELETE FROM test1
WHERE ROWID IN( SELECT row_id
FROM ( SELECT ROWID row_id,
RANK( ) OVER( PARTITION BY ID ORDER BY createdate DESC ) rank_value
FROM test1 )
WHERE rank_value 2 );
自己研究RANK()和DENSE_RANK()的區(qū)別。你或許想用DENSE_RANK()。我不知道如果有多于一行的數據擁有最大(或者第二大)的日期你想怎么辦。
修改你的外鍵設置,達到級聯(lián)刪除的目的,具體實現如下:
a)先查詢出EMP表和POS表中 外鍵的名稱(如果你知道 外鍵名這一步可以省略)
select CONSTRAINT_NAME,TABLE_NAME from user_constraints where CONSTRAINT_TYPE ='R' and TABLE_NAME in('EMP','POS');
b)刪除EMP表和POS表上的外鍵后 重新建立允許級聯(lián)刪除的外鍵模式
alter table EMP drop constraint 外鍵名;
alter table POS drop constraint 外鍵名;
alter table EMP add constraint 外鍵名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;
alter table POS add constraint 外鍵名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;
這樣刪除關聯(lián)刪除是自動的
網頁名稱:oracle刪除怎么關聯(lián),oracle刪除關聯(lián)表數據
文章地址:http://sd-ha.com/article18/hdhsgp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站建設、外貿網站建設、建站公司、搜索引擎優(yōu)化、網站排名、服務器托管
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)