SQL級聯更新和級聯刪除

2021-06-06 07:31:03 字數 1413 閱讀 1087

alter table 表名

add constraint 約束名

foreign key(欄位名) references 主表名(欄位名)

on delete cascade

語法:foreign key

(column[,...n])

references referenced_table_name[(ref_column[,...n])]

[on delete cascade]

[on update cascade]

注釋:column:列名

referenced_table_name:外來鍵參考的主鍵表名稱

ref_name:外來鍵要參考的表的主鍵列

on delete:刪除級聯

on update:更新級聯

表的外來鍵約束

select 外來鍵表id=b.fkeyid

,外來鍵表名稱=object_name(b.fkeyid)

,外來鍵列id=b.fkey

,外來鍵列名=(select name from syscolumns where colid=b.fkey and id=b.fkeyid)

,主鍵表id=b.rkeyid

,主鍵表名=object_name(b.rkeyid)

,主鍵列id=b.rkey

,主鍵列名=(select name from syscolumns where colid=b.rkey and id=b.rkeyid)

from sysobjects a

join sysforeignkeys b on a.id=b.constid

join sysobjects c on a.parent_obj=c.id

where a.xtype='f' and c.xtype='u'   

查詢乙個表的所有外來鍵:

select 主鍵列id=b.rkey

,主鍵列名=(select name from syscolumns where colid=b.rkey and id=b.rkeyid)

,外來鍵表id=b.fkeyid

,外來鍵表名稱=object_name(b.fkeyid)

,外來鍵列id=b.fkey

,外來鍵列名=(select name from syscolumns where colid=b.fkey and id=b.fkeyid)

from sysobjects a

join sysforeignkeys b on a.id=b.constid

join sysobjects c on a.parent_obj=c.id

where a.xtype='f' and c.xtype='u'

and object_name(b.rkeyid)='要查詢的表名'  

mysql 級聯更新和刪除操作

我們通常有這樣的需求 刪除表table 1中記錄,需要同時刪除其它表中與table 1有關的若干記錄。對於這種,我們有兩種解決方法 一,使用innodb表的外來鍵約束 alter table score add constraint student ibfk1 foreign key sid sid...

資料庫級聯更新和刪除

如果a id,name 表為主表。b id,a id,name 表為從表,b.a id外來鍵關聯到a id。那麼如果需要更新a.id或者刪除a的資料,且在b表中有資料關聯到需要更新或者刪除的a表紀錄,那麼普通的更新必然會有外來鍵衝突。解決方法如下 mysql 在b表中建立delete cascade...

SQL 級聯刪除與級聯更新的方法

複製 如下 on delete cascade 當你更新或刪除主鍵表時,那麼外來鍵表也會跟隨一起更新或刪除,需要在建表時設定級聯屬性 create table countries countryid int primary key insert into countries countryid va...