C# 数据库触发器还是代码中的常用方法?

C# 数据库触发器还是代码中的常用方法?,c#,sql,sql-server-2005,methods,triggers,C#,Sql,Sql Server 2005,Methods,Triggers,我有一个表,我想在其中记录我的应用程序的某些部分的活动。在其他表中插入/更新记录时,将在此表中插入一条记录(将来可能会更新) 例如 如果在订单表中插入记录 将在日志中插入一个条目 桌子 如果在预订中插入记录 表中将插入一个条目 日志表 如果记录在客户中更新 表中将插入一个条目 日志表,如果日志表没有 此客户的条目 等等 我应该在这些表上使用触发器在日志表中添加记录,还是应该在代码中有一个公共方法,并在发生insert/update活动时调用该方法 我必须在我的应用程序的某些部分上执行此活动,

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

例如

  • 如果在订单表中插入记录 将在日志中插入一个条目 桌子
  • 如果在预订中插入记录 表中将插入一个条目 日志表
  • 如果记录在客户中更新 表中将插入一个条目 日志表,如果日志表没有 此客户的条目
等等

我应该在这些表上使用触发器在日志表中添加记录,还是应该在代码中有一个公共方法,并在发生insert/update活动时调用该方法

我必须在我的应用程序的某些部分上执行此活动,以便可以在20多个表上添加触发器,或者从几个不同的位置调用该方法

我正在使用SQL Server 2005和C


触发器还是方法更好?

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

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

方法比触发器更好。 触发器通常是 -性能重 -在代码中不太明显(隐藏) -更难调试和维护。 -要传递到日志表的值的限制


在优化代码、扩展逻辑和易于维护方面,一种方法会给您带来很多好处。对于这样的问题,永远都不会太迟,
通常,触发器会减少数据库和代码的往返时间,
在您的情况下,要在C#中执行此操作,您需要为每个操作执行两次行程,一次用于操作(插入),一次用于日志操作,当然,您需要对代码中的异常进行大量处理,因此如果未插入记录,您将处理此操作,并记录不同的失败操作
作为触发器,您将数据发送一次到服务器,所有操作和处理都在那里完成,没有额外的连接

这在所有东西都共享且连接轮询有限的情况下特别有用。

这在现在看来可能并不重要,但在将来可能会变得更重要。防止客户端直接篡改数据库,也防止您在部分代码中忘记它。+1:如果它是“常见的”,那么您有几种面向对象技术来处理这个问题。继承和委托是使其成为应用程序公共部分的重要方法。此外,在某些语言中,您使用了“面向方面编程”技术,如“装饰器”,使此通用功能易于应用于相关类。如果有人认为此问题的标签更好,请编辑它。