Members

Technology Zones

IBM Learning Center

Articles

Hosted By

MaximumASP

Info

Rated
Read 28,427 times

Contents

Related Categories

Using Triggers to track database action history - Introduction

tlkelley

Introduction

Several State and Federal contracts that I have worked on in the past have wanted to keep track of all changes to a particular record, such as who modified the record, what kind of modification took place, and when the record modification occurred. I decided to solve this problem with triggers because I wanted to capture every action that occurred on a particular table. For those unfamiliar with triggers, a trigger is a database-event that fires when a particular action occurs. For example, an INSERT trigger would fire when a particular database table has a record inserted.

The Web application that needed to track all database actions was an ASP Intranet application connected to a SQL Server 7 database, using NT Challenge/Response authentication. There were many database tables in this application, but for this article, we'll just examine one particular table and how I managed to track the history for this table. Applying this technique to other database tables is trivial.

Note:  A database trigger only fires once per statement; therefore, if you perform a mass update or mass delete then those instances will not be recorded for each record. Keep this in mind when you develop your own triggers.

Always working hard!!

Comments

  • Re: Bulk Operations

    Posted by Jeff Moden on 13 Feb 2008

    Oh, no.... I didn't say anything about using a cursor.  There's no need for the RBAR (pronounced "ree-bar" and is a "Modenism" for "Row By Agonizing Row").  Do it...

  • Bulk Operations

    Posted by sdietze on 14 Jan 2005

    Hi Tal,

    Jeff is right. Just declare a cursor that iterates over the inserted/deleted table. It should fetch at least your PKs, which you can use to retrieve the inserted/deleted lines - one after a...

  • You CAN do mass updates of audit table w/ trigger

    Posted by Jeff Moden on 12 May 2004

    Hi Tal,

    You wrote "Note: A database trigger only fires once per statement; therefore, if you perform a mass update or mass delete then those instances will not be recorded for each record. Keep th...