SQl語句的級聯刪除問題
刪除應該有順序
1,刪除link表
delete from ref,link where ref.link_code=link.link_code and link_id=?
delete from link where link_id=?
2,刪除plan表
delete from ref,plan where ref.plan_code=plan.plan_code and plan_id=?
delete from plan where plan_id=?
SQL 怎麼級聯刪除語句
方法一:
MSSQLSERVER是支持級聯更新和級聯刪除的,你要在建立外鍵的時候,要指定
EP:
alter table tb_userroles
add constraint FK_TB_USERR_RELATIONS_TB_FUNCT foreign key (gnbm)
references tb_function (gnbm)
on update cascade on delete cascade
方法二:用數據庫觸發器
sql如何通過外鍵約束實現級聯刪除和更新
設定外鍵為級聯刪除就可以了。
alter table B add constraint fk_ID foreign key (ID) references A(ID) on delete cascade;
這樣隻需:delete from A where ID=nnnn; 就可以自動刪除對應B表內容了。
通過外鍵無法實現同步更新。
sql中級聯刪除,級聯更新是怎麼理解的?
級聯刪除你可以把它認為是一個觸發器,也就是你刪除主表中的數據,那麼從表中的相關聯的也就一起刪除了。。。看個例子:======================create table a
(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B創建了外碼userId 對應A的主碼ID,聲明了級聯刪除
測試數據:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
刪除A表內id為‘11’的數據,發現B表內userId 為“11”也被數據庫自動刪除了,這就是級聯刪除
delete a where id='11'=============================================================級聯更新也大同小異。。隻是關鍵字為:on update希望回答對你有所幫助........
sql server中如何級聯刪除?
可以用下邊的方法,僅供參考:
--?創建測試主表.?ID?是主鍵.
CREATE?TABLE?test_main?(
id??????INT???NOT?NULL,
value???VARCHAR(10),
PRIMARY?KEY(id)
);
--?創建測試子表.
CREATE?TABLE?test_sub?(
id??????INT??NOT?NULL,
main_id?INT?,
value???VARCHAR(10),
PRIMARY?KEY(id)
);
--?插入測試主表數據.
INSERT?INTO?test_main(id,?value)?VALUES?(1,?'ONE');
INSERT?INTO?test_main(id,?value)?VALUES?(2,?'TWO');
--?插入測試子表數據.
INSERT?INTO?test_sub(id,?main_id,?value)?VALUES?(1,?1,?'ONEONE');
INSERT?INTO?test_sub(id,?main_id,?value)?VALUES?(2,?2,?'TWOTWO');
然後,創建外鍵,使用?ON?DELETE?CASCADE?選項,刪除主表的時候,同時刪除子表
ALTER?TABLE?test_sub?ADD?CONSTRAINT?main_id_cons?FOREIGN?KEY?(main_id)??REFERENCES??test_main??ON?DELETE?CASCADE;
執行刪除:
DELETE?FROM?TEST_MAIN?WHERE?ID?=?1;
最後:
SELECT?*?FROM?TEST_MAIN;
結果子表中就隻有ID=2的記錄,也就說明級聯刪除成功。
SQL 怎麼級聯刪除語句???
方法一:
MSSQLSERVER是支持級聯更新和級聯刪除的,你要在建立外鍵的時候,要指定
EP:
alter table tb_userroles
add constraint FK_TB_USERR_RELATIONS_TB_FUNCT foreign key (gnbm)
references tb_function (gnbm)
on update cascade on delete cascade
方法二:用數據庫觸發器
SQL server中怎麼修改級聯刪除修改
在創建表的時候就需要設置級聯刪除和級聯更新(修改)。方法如下:
alter?table?SZ_Picture
add?constraint?FK_SZ_PICTU_RELATIONS_SZ_PICTU?foreign?key?(pictureTypeId)
references?SZ_PictureType?(pictureTypeId)
on?update?cascade?on?delete?cascade?--其中這句就是級聯更新和級聯刪除
級聯刪除:
刪除包含主鍵值的行的操作,該值由其它表的現有行中的外鍵列引用。在級聯刪除中,還刪除其外鍵值引用刪除的主鍵值的所有行。
級聯更新:
更新主鍵值的操作,該值由其它表的現有行中的外鍵列引用。在級聯更新中,更新所有外鍵值以與新的主鍵值相匹配。
如何實現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
參照完整性約束
來源:([blog.sina.com.cn]) - SQL與Oracle外鍵約束中的級聯刪除_點點_新浪博客
限製(Restrict)。不允許進行修改或刪除操作。若修改或刪除主表的主鍵時,如果子表中存在子記錄,係統將產生一個錯誤提示。這是缺省的參照完整性設置。
置空(Set Null)。如果外鍵列允許為空,若修改或刪除主表的主鍵時,把子表中參照的外鍵列設置為空值(NULL)。
置為缺省(Set Default)。如果指定了缺省值,若修改或刪除主表的主鍵時,把子表中參照的外鍵設置為缺省值(Default)。
級聯(Cascade)。把主表中主鍵修改為一個新的值時,相應修改子表中外鍵的值;或者刪除主表中主鍵的記錄時,要相應刪除子表中外鍵的記錄。
注意:在oracle中建立好的constraint (包括primay key,foreign key) 如果要修改,必須先alter table drop contraint con_name;然後再重新add constraint
oracle 創建表 時設置 級聯刪除和級聯更新 的語句
外鍵隻能是參照表的主鍵,所以應該參照userid,要參照uname隻能用觸發器。
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)
sql語句從主表刪除一條數據,並且把先關聯的多個子表數據也刪除
DELETE FROM table WHERE date in('c','e','f')
*
結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫係統;
*
用外鍵關聯刪除,把B表的uid設成外鍵關聯A表的ID,並關聯刪除操作。
*
用存儲過程,用事務來處理實現。
*
創建數據庫:CREATE DATABASE database-name刪除數據庫
*
drop database dbname
*
創建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
*
刪除新表:drop table tabname
*
增加一個列:Alter table tabname add column col type
*
添加主鍵:Alter table tabname add primary key(col)
*
刪除主鍵:Alter table tabname drop primary key(col)
*
創建索引:create [unique] index idxname on tabname(col….)
*
刪除索引:drop index idxname
*
創建視圖:create view viewname as select statement
*
刪除視圖:drop view viewname
轉載請注明出處句子大全網 » SQl語句的級聯刪除問題