2014-03-02 54 views
1

我正在使用asp.net C#,并且我在SQL Server 2005数据库中有一个表。一旦学生点击应用程序界面中的特定按钮,将从会话中获取的学生ID应存储在StudentID属性中。在特定时间(例如:上午9:00),我想自动删除表格记录。如果我能够将这些已删除的记录归档到某处,会更好。 我在谷歌搜索,我发现我必须做一个日志触发器,但我不知道这是否是我的情况下,我想每天删除表格记录两次(在两个不同的时间)的最佳解决方案! !删除SQL Server 2005数据库中的表记录并保留已删除的记录

其实我从来没有使用触发器,但我读过它用来删除记录。

关于删除表中的记录在SQL Server 2005数据库的任何帮助将不胜感激..

感谢。

回答

1

编写存储过程以删除表中和相同SP写入语句中的记录,以将已删除的记录插入到存档表中。您可以使用已删除的关键字从表中访问已删除的行。现在,一旦完成了SP的创建,就可以在此SP上的SQL Server中创建一个作业,并按照您的要求进行安排。

或者,您只能将删除逻辑放在存储过程中,并将插入到归档表逻辑移到主表上开发的触发器。

检查了这一点,供大家参考:http://technet.microsoft.com/en-us/library/ms177564.aspx

+1

目前尚不清楚的是创建一个存储过程在这里增加很多 –

+0

@MarcGravell是的你是对的,它可以在不创建SP的情况下完成。根据我的观点,使用SP创建SQL作业将更易于维护,因为它还增加了重用性(同一个SP可用于一个或多个SQL Server作业)。 –

+0

看起来需要定期删除和存档数据。根据我的观点,为了解决这个需求,sql工作应该是最合适的。 –

3

一个普通的SQL触发器应该很好地工作:

create trigger FooDeleteTrigger on Foo 
after delete 
as 
insert FooArchive (...columns...) 
select ...columns... 
from deleted 

另外,全部在一个命令:

delete from Foo 
output deleted.col1, deleted.col2, ... 
into FooArchive 
--where clause as needed, etc 
+0

我不确定哪个更好用?触发还是存储过程?我在两个方面都没有经验。所以请帮我决定.. – user3287580

+0

@ user3287580要么会正常工作,虽然我没有提到存储过程在任何时候 –