Do want to log the update if the data in the column does not change. For example:
Update Table
Set column = column
Will cause an update trigger to fire even if you use the If UPDATE(Column) syntax.
My recommendation would be something along these lines:
ALTER trigger [dbo].[badge_Print_history] on [dbo].[ev_registrant]
for Insert, update
AS
/*
This should only return rows that are updates.
*/
IF EXISTS(SELECT 1 FROM deleted AS D JOIN inserted I ON D.primary_key = I.primary_key)
BEGIN
INSERT [dbo].[client_gcsaa_badge_print_history]
(
s10_reg_badge_print_date,
s10_reg_cst_key,
s10_reg_key,
s10_reg_evt_key,
s10_reg_add_user,
s10_reg_change_user,
s10_reg_change_date,
s10_reg_delete_flag,
s10_reg_ivd_key
)
Select
reg_badge_print_date,
reg_cst_key,
reg_key,
reg_evt_key,
reg_add_user,
reg_change_user,
reg_change_date,
reg_delete_flag,
reg_ivd_key
from
Inserted AS I JOIN
deleted AS D ON
I.primary_key = D.primary_key AND
/*
This means the data in the desired column
changed.
*/
I.column_updated <> D.column_updated
END
ELSE -- insert
BEGIN
INSERT [dbo].[client_gcsaa_badge_print_history]
(
s10_reg_badge_print_date,
s10_reg_cst_key,
s10_reg_key,
s10_reg_evt_key,
s10_reg_add_user,
s10_reg_change_user,
s10_reg_change_date,
s10_reg_delete_flag,
s10_reg_ivd_key
)
Select
reg_badge_print_date,
reg_cst_key,
reg_key,
reg_evt_key,
reg_add_user,
reg_change_user,
reg_change_date,
reg_delete_flag,
reg_ivd_key
from
Inserted
END
Jack Corbett
Consultant - Straight Path Solutions
Check out these links on how to get faster and more accurate answers:
Forum Etiquette: How to post data/code on a forum to get the best help
Need an Answer? Actually, No ... You Need a Question