数据库触发器或代码中的常用方法?

时间:2010-08-18 10:47:08

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

我有一个表,我想记录我的应用程序的某些部分的活动。当在其他表中插入/更新记录时,将在此表中插入记录(可能在将来更新)。

E.g。

  • 如果在Orders表中插入了记录 一个条目将插入日志中 表
  • 如果在预订中插入了记录 表格将插入一个条目 记录表。
  • 如果在客户中更新了记录 表格将插入一个条目 如果日志表没有,则为日志表 该客户的条目。

等。

我是否应该在这些表上使用触发器在Log表中添加记录,或者我的代码中是否应该使用通用方法并在插入/更新活动发生时调用该方法?

我必须在我的应用程序的某些部分执行此活动,因此可以有超过20个表格,我将在其中添加触发器或从我将调用方法的几个不同位置。

我正在使用SQL Server 2005和C#

什么是更好的,Trigger或A方法?

4 个答案:

答案 0 :(得分:4)

方法是比Trigger更好的选择。 触发器通常是 - 表现沉重 - 代码中不太明显,即隐藏起来 - 更难以调试和保持。 - 限制要传递给日志表的值

一种方法在优化代码,扩展逻辑和更容易维护方面会给你很多好处

答案 1 :(得分:2)

由于这似乎是一项重要任务,我将在RDBMS中使用触发器,以确保不仅您的应用程序会导致创建日志。

答案 2 :(得分:1)

如果有人能够使用TOAD,SSMS,查询分析器等技术在没有您的应用程序的情况下更新数据库,那么触发器会更好

答案 3 :(得分:0)

对于这样的问题永远不会太迟,
通常,触发器会减少数据库和代码的往返行程,
在您的情况下,要在C#中执行此操作,您需要为每个操作进行两次旅行,一次为操作(插入),一次为log操作,当然,您需要对代码中的异常进行大量处理,因此如果未插入记录,您可以处理此问题,还可以记录失败的不同操作
作为触发器,您只需将数据发送到服务器一次,所有操作和处理都将在此完成,而无需额外的连接
由于每件事都是共享的并且连接轮询受到限制,所以这特别有用。