sqlserver写一个存储过程删除所有表中指定日期之前的历史数据

2020-09-28 16:19发布

不是指作业、定时删除的那种,就是一个存储过程,删除所有表中指定日期之前的历史数据。比如指定一个日期2019.12.31 ,那么数据库中在此之前的数据都会消失。大神们帮帮忙

3条回答
ゆ 、 Hurt°
2楼-- · 2020-09-28 17:02

给你大致的代码

select 'delete from '+name+'where datetime < ''20200923'' ;' from sys.objects where type = 'U'
这样可以把 删除的sql语句 批量拼接出来,
当然 因为写在存储过程里 datetime 这个字段你可以处理一下,时间也可以做成参数处理一下,
然后 exec整段字符串

查看更多
Explosion°爆炸
3楼-- · 2020-09-28 17:09

所有表都有时间列吗?

查看更多
姐就是有狂的资本
4楼-- · 2020-09-28 17:11

这个需求描述有问题,所有表包含系统运行的字典表和业务表。业务表一般来说是有时间字段。字典表肯定不能删除。
一般不建议直接删记录,可以把这些记录挪到备份数据库中。

查看更多
登录 后发表回答