1、建库
if exists(select * from sysobjects where name='temp')
drop database tempgo
create database temp
go
use temp
go
--主表
use temp
if exists(select * from sysobjects where name='UserInfo')
drop table UserInfo
go
create table UserInfo
(
UserId int identity(1,1) primary key ,
UserName varchar(20), --用户名
password varchar(20) not null --密码
)
--子表
if exists(select * from sysobjects where name='UserDetails')
drop table UserDetails
go
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
)
go
--2、添加数据
insert UserInfo values ('ly','jeff')
insert UserInfo values('wzq','wzqwzq')
insert UserInfo values('lg','lglg')
go
insert UserDetails values('李四',1)
insert UserDetails values('王五',2)
insert UserDetails values('刘六',3)
--添加后两个表是这样的
--主表
--从表
--3、测试,删除一条父表信息,看子表是否随之删除
Delete From UserInfo Where Username = 'wzq' --就可删除UserInfo表和UserDetails表的UserId=2 的内容
删除后的表
主表
从表
如果一开始没有加 on cdelete cascade
可以用下面的方法
alter UserDetails add constraint foreign key (UserId)
references UserInfo(UserId) on delete cascade;
一条sql语句就把拥有外键关系的从表的信息给删完了呢,是不是很神奇呢?