+ -
当前位置:首页 → 问答吧 → 【求助】删除SQL SERVER数据库中所有含有(调用)一个主键的所有行

【求助】删除SQL SERVER数据库中所有含有(调用)一个主键的所有行

时间:2011-11-05

来源:互联网

我需要删除一个数据库中一段时间的数据,我找到了一个主键,主要删除所有调用关联这个主键的所有数据我认为就可以达到我的要求了。

主键的数值:hj2009030215
分析下:标示hj+年月日+15。15代表在那一天的第几次。也就是会有hj2009030201,hj2009030202,等等这样。

请问如何在数据库中的所有表中删除所有关联调用这个的所有行?

作者: guojimail   发布时间: 2011-11-05

设置级联删除就行了

作者: roy_88   发布时间: 2011-11-05

SQL code
declare @startdate datetime  --你一段时间的起始日
declare @enddate             --你一段时间的终止日
set @startdate='2011-10-20'
set @enddate='2011-10-25'
delete from tb               --你要删除数据的表 
where 主键>='hj'+convert(varchar(8),@startdate,112) 
and 主键<'hj'+convert(varchar(8),dateadd(d,1,@enddate),112)

作者: qianjin036a   发布时间: 2011-11-05

SQL code
use tempdb
go
create table t(ID int unique)
create table t2(TID int references t(ID) on delete cascade)
go
insert t select 1
insert t2 select 1
go

delete t

select * from t2

作者: roy_88   发布时间: 2011-11-05

主键的数值:hj2009030215--这是表主健时,可以按以上例子这样用

作者: roy_88   发布时间: 2011-11-05

引用楼主 guojimail 的回复:
我需要删除一个数据库中一段时间的数据,我找到了一个主键,主要删除所有调用关联这个主键的所有数据我认为就可以达到我的要求了。

主键的数值:hj2009030215
分析下:标示hj+年月日+15。15代表在那一天的第几次。也就是会有hj2009030201,hj2009030202,等等这样。

请问如何在数据库中的所有表中删除所有关联调用这个的所有行?保存文章到麦库关闭工具条


修正一下,hj2009030215 这个也有可能是复制的,也就是说每个表都有一个,写的时候可能是同时写入多个表。问题是怎么来看呢?

作者: guojimail   发布时间: 2011-11-05

引用 2 楼 qianjin036a 的回复:

SQL code
declare @startdate datetime --你一段时间的起始日
declare @enddate --你一段时间的终止日
set @startdate='2011-10-20'
set @enddate='2011-10-25'
delete from tb --你要删除数据的表
where 主键>='h……


多谢,请问怎么删除所有的表里面的数值呢?

作者: guojimail   发布时间: 2011-11-05

设置级联删除。

作者: fredrickhu   发布时间: 2011-11-05

作者: fredrickhu   发布时间: 2011-11-05