怎样设置sql自动删除逐月生成的过期数据表
sql每个月生成一张表,表名相似按年月命名。怎样设置自动删掉三个月以外的表?好像要建立一个作业或建一个触发器解决,求方法
[解决办法]
用定时作业 用getdate()取年月与表名匹配进行删除
[解决办法]
建立JOB了。
delete from tb where datediff(mm,date,getdate()) > 3
[解决办法]
额。看错了,以为是一个表的数据。
表名的命名有规律没,例如按年月命名的表是 YMD201201 YMD201202 这样子,但其他表不会以YMD开头,如果是这样可以采用动态去拼接SQL的删除语句进行删除表。
[解决办法]
declare @sql varchar(6000)-- sql每个月生成一张表,表名相似按年月命名set @sql='create table tab'+convert(varchar(6),getdate(),112)+' ([表字段列表])'exec(@sql)-- 设置自动删掉三个月以外的表while(exists(select 1 from sysobjects where xtype='U' and name like 'tab%' and datediff(m,right(name,6)+'01',getdate())>=3))begin select @sql='drop table ['+name+'] ' from sysobjects where xtype='U' and name like 'tab%' and datediff(m,right(name,6)+'01',getdate())>=3 exec(@sql) end
[解决办法]