怎样删除存在主外键关系的数据,怎样编写SQL语句

 我来答
匿名用户
推荐于2018-04-22
展开全部
如果你的表里面 使用了级联关系 你删除主表时 子表也就删除了。 如果咩有的话 你只能写where语句比较了之前如果有级联关系(级联关系:主键执行的操作同时影响外键)的话,只需要运行delete 列名 from 表名 where 约束条件
匿名用户
2013-09-13
展开全部
最保险的方法就是根据主外键,先从子表中删除,然后再把主表的记录删除
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-13
展开全部
use master
go

if exists(select * from sysdatabases where name = 'Test')
drop database Test
go

create database Test
on primary
(
name = 'Test_data.mdf',--数据库主文件名
filename = 'E:\Test_data.mdf',--数据库主文件存放位置
size = 3mb,--数据库主文件初始大小为3m
maxsize = 10mb,--数据库主文件最大为10m,可省略
filegrowth = 1mb --文件超过3mb,以1m大小增长
)
log on
(
name = 'Test_data.ldf',--数据库日志文件名
filename = 'E:\Test_data.ldf',--数据库日志文件存放位置
size = 1mb,--数据库日志文件初始大小为1mb,可省略
maxsize = 4mb,--数据库日志文件最大为4mb
filegrowth = 10%--数据库日志文件超过4mb,以10%大小增长
)
go

if exists(select * from sysobjects where name = 'Users')
drop table Users
go

create table Users
(
Id int primary key identity(1,1),
name varchar(20) not null
)
go

if exists(select * from sysobjects where name = 'Schedules')
drop table schedules
go

create table Schedules
(
Id int primary key identity(1,1),
Uid int foreign key references Users(Id),
name varchar(20) not null
)
go

insert into Users(Name) values ('L.S.');
insert into Users(Name) values ('R.S.');
insert into Schedules(Uid,name) values(1,'常规会议');
insert into Schedules(Uid,name) values(1,'项目展示');
insert into Schedules(Uid,name) values(2,'常规会议');
insert into Schedules(Uid,name) values(2,'项目展示');

select * from Users
select * from Schedules

--这个时候想删除用户(Users)表L.S.这条信息,就必须先删除计划(Schedules)表中L.S.的相关信息。
delete from Schedules where Uid = (select Id from Users where name = 'L.S.')
delete from Users where name = 'L.S.'

select * from Users
select * from Schedules
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式