日期:2014-05-18  浏览次数:20834 次

C#写的关于SQL数据库问题
实时数据表中的数据超过24小时就自动存入到历史数据表中,而历史数据表中的数据超过1个月就自动删除,这几句代码怎么写啊?都困扰我好几天了...
我用了个笨方法把实时数据表中的数据给删了,想把删除的这条记录存入到历史数据表中,但是不会实现,谁能指点一下我啊,先谢过了!
con.Open();
string ssql = "delete from tb_RealTemp where id = (select max(id)-1 from tb_RealTemp)";
SqlCommand cmdd = new SqlCommand(ssql, con);
cmdd.ExecuteScalar();
con.Close();

------解决方案--------------------
SQL code

--这要写C#执行程序吗? SQL代理不就自动完成了???

/*插入历史表*/
insert into [历史表]
select * from tb_RealTemp where [时间字段]<= datediff(hour,-24,getdate())

/*删除已插入历史表的数据*/
delete from tb_RealTemp where [时间字段]<= datediff(hour,-24,getdate())

/*删除历史表超过一月的数据*/
delete from [历史表] where [时间字段]<= datediff(month,-1,getdate())

--这三条语句 放SQL代理里,每小时执行一次,搞定!

------解决方案--------------------
如上说的放在作业里比较安全。 如果你用C#做的话,如果你的C#打开才能进行处理。

对于你说的不知道怎么写SQL语句的话建议你多看下SQL时间函数然后再写。。


------解决方案--------------------
你要在C#中写代码来实现,最后还是要连接到数据库,让数据库执行SQL代码,那干嘛不直接到数据库里利用自动作业执行呢?MSSQL可以自行设置自动作业的执行时间、执行策略,比用C#控制方便多了。
再说了,你用C#来实现,除非你写个WinService服务,这个更麻烦了。