級聯刪除


級聯刪除練習

--創建用戶表(主表)
create table UserInfo
(
UserId int identity(1,1) primary key ,
UserName varchar(20),  --用戶名
password varchar(20) not null --密碼
)
--創建用戶詳情表(附表)
create table UserDetails
(
id int identity(1,1) primary key,
name varchar(50) not null, --真實姓名
userId int
--方法一: 創建用於級聯刪除的約束
--foreign key (userId) references UserInfo(UserId)  on delete cascade
)

--方法二:創建用於級聯刪除的約束
alter table  UserDetails  --約束對象UserDetails
add constraint [FK_UserDetails_UserInfo]   --添加約束,命名為FK_UserDetails_UserInfo
foreign key(UserId) references UserInfo(UserId) -- UserDetails表的UserId列引用UserInfo表UserId列的值
on delete cascade  --級聯刪除

--插入測試數據
insert UserInfo values ('ly','jeff')
insert UserInfo values('wzq','wzqwzq')
insert UserInfo values('lg','lglg')
 
insert UserDetails values('李四',1)
insert UserDetails values('王五',2)
insert UserDetails values('劉六',3)


--測試級聯刪除
--刪除 UserInfo 主表中UserID=1的同時刪除UserDetails從表中UserId=1 的內容 
delete from userInfo where UserId=1

--刪除userDetails從表中UserId=1 對主表無影響
delete from userDetails where UserId=1

--刪除用於級聯刪除的約束
ALTER TABLE [dbo].[UserDetails] DROP CONSTRAINT [FK_UserDetails_UserInfo]

 --查詢
select *from UserInfo
select *from UserDetails




sqlserver 支持級聯刪除語法

alter table  外鍵表名稱
add constraint 約束名稱
Foreign Key(column[,...n]) 
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]

注釋
column:外鍵表的列名
referenced_table_name:外鍵參考的主鍵表名稱
ref_name:外鍵要參考的表的主鍵列
on delete:刪除級聯

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM