永发信息网

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

答案:3  悬赏:40  手机版
解决时间 2021-12-01 14:21
  • 提问者网友:听门外雪花风
  • 2021-11-30 20:18
怎样删除存在主外键关系的数据,怎样编写SQL语句
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-11-30 21:28
如果你的表里面 使用了级联关系 你删除主表时 子表也就删除了。 如果咩有的话 你只能写where语句比较了之前如果有级联关系(级联关系:主键执行的操作同时影响外键)的话,只需要运行delete 列名 from 表名 where 约束条件
全部回答
  • 1楼网友:何以畏孤独
  • 2021-11-30 22:34
最保险的方法就是根据主外键,先从子表中删除,然后再把主表的记录删除
  • 2楼网友:渡鹤影
  • 2021-11-30 21:47
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯