title: SQL Server Update trigger for bulk updates
body: <p>Below is a SQL Server 2005 update trigger. For every update on the email_subscriberList table where the isActive flag changes we insert an audit record into the email_Events table.  This works fine for single updates but for bulk updates only the last updated row is recorded.  How do I convert the below code to perform an insert for every row updated?</p>
  
  <pre><code>CREATE TRIGGER [dbo].[Email_SubscriberList_UpdateEmailEventsForUpdate_TRG]
  ON [dbo].[Email_subscriberList]
  FOR UPDATE
  AS
  DECLARE @CustomerId int
  DECLARE @internalId int
  DECLARE @oldIsActive bit
  DECLARE @newIsActive bit
  DECLARE @email_address varchar(255)
  DECLARE @mailinglist_name varchar(255)
  DECLARE @email_event_type varchar(1)
  
  SELECT @oldIsActive = isActive from Deleted 
  SELECT @newIsActive = isActive from Inserted
  
  IF @oldIsActive &lt;&gt; @newIsActive
  
   BEGIN
  
   IF @newIsActive = 1
       BEGIN
       SELECT @email_event_type = 'S'
       END
   ELSE
       BEGIN
       SELECT @email_event_type = 'U'
       END
  
  
   SELECT @CustomerId = customerid from Inserted
   SELECT @internalId = internalId from Inserted
   SELECT @email_address = (select email from customer where customerid = @CustomerId)
   SELECT @mailinglist_name = (select listDescription from Email_lists where internalId = @internalId)
  
   INSERT INTO Email_Events
   (mailshot_id, date, email_address, email_event_type, mailinglist_name)
   VALUES
   (@internalId, getDate(), @email_address, @email_event_type,@mailinglist_name)
  
   END
  </code></pre>