删除SQL Server 2005数据库中的表记录并保留已删除的记录

时间:2014-03-02 09:56:41

标签: c# sql-server sql-server-2005 triggers

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

实际上我从不使用触发器,但我读到它曾用于删除某些记录。

有关删除SQL Server 2005数据库中的表记录的任何帮助都将受到赞赏..

感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

或者,您只能将删除逻辑放在存储过程中,并将insert-to-archive-table逻辑移动到主表上开发的触发器。

请查看此信息以供参考:http://technet.microsoft.com/en-us/library/ms177564.aspx