不管是update還是merge每次都是只能修改一站表,還沒聽說一次修改兩張表的。
10年積累的成都網(wǎng)站設計、成都網(wǎng)站建設、外貿(mào)網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先做網(wǎng)站后付款的網(wǎng)站建設流程,更有蓮花免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
如果分別修改那就比較簡單了(先確定B列是否唯一,如果不唯一,那么可能存在修改擴大的問題,所以可能還要修改語句),update a set a.d=2 where a.b=(select b from E where h=1)(這是a表的,b表的改法更容易)
如果一起修改,那么可能只能臨時修改,也就是select的時候修改一下,這個一般沒什么用。
設定dept表deptno列為主鍵。
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表內(nèi)容。
外鍵只能是參照表的主鍵,所以應該參照userid,要參照uname只能用觸發(fā)器。
create table users (userid primary key,uname unique)
go
create table board (bid primary key,bhost, foreign key(bhost) references users(userid) on delete CASCADE on update CASCADE)
1 可以
2 也可以不用觸發(fā)器,用存儲過程也可以。
頁面點擊刪除,調(diào)用一個存儲過程。 存儲過程中把兩個delete語句寫在一起。
delete from student ....
delete from grade ....
commit; (這兩句就相當于一個事務)
異常處理中寫rollback,以防有問題刪除不成功可以回滾。
系統(tǒng)中要刪除一條記錄,就要關聯(lián)到同時刪除好多張表,它們之間還存在著約束關系.所以考慮到在創(chuàng)建表時加上約束關系,詳細內(nèi)容如下:
SQL的外鍵約束可以實現(xiàn)級聯(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)將產(chǎn)生一個錯誤提示。這是缺省的參照完整性設置。
置空(Set Null)。如果外鍵列允許為空,若修改或刪除主表的主鍵時,把子表中參照的外鍵列設置為空值(NULL)。
置為缺省(Set Default)。如果指定了缺省值,若修改或刪除主表的主鍵時,把子表中參照的外鍵設置為缺省值(Default)。
級聯(lián)(Cascade)。把主表中主鍵修改為一個新的值時,相應修改子表中外鍵的值;或者刪除主表中主鍵的記錄時,要相應刪除子表中外鍵的記錄。
注意:在oracle中建立好的constraint (包括primay key,foreign key) 如果要修改,必須先alter table drop contraint con_name;然后再重新add constraint