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

问题描述 投票:2回答:4

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

EG

  • 如果在Orders表中插入了记录,则会在Log表中插入一个条目。
  • 如果在Booking表中插入记录,则会在Log表中插入一个条目。
  • 如果在Customers表中更新了记录,则如果日志表没有该客户的条目,则会在日志表中插入一个条目。

等等..

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

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

我正在使用SQL Server 2005和C#

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

c# sql sql-server-2005 methods triggers
4个回答
1
投票

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


4
投票

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

在优化代码,扩展逻辑和更易于维护方面,一种方法将为您提供许多优势


2
投票

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


0
投票

这样的问题永远不会太晚, 通常,触发器减少数据库和代码的往返, 在你的情况下,要在C#中执行此操作,每个操作需要2次,一次用于操作(Insert),一次用于日志操作,当然,您需要对代码中的异常进行大量处理,以便您没有插入记录,您也可以记录不同的失败操作 作为触发器,您将数据一次发送到服务器,所有操作和处理都在那里完成,没有额外的连接 这是特别有用的,因为每个东西都是共享的,连接轮询是有限的。

© www.soinside.com 2019 - 2024. All rights reserved.