• If all you're doing is updates, you can so this with an update trigger and a single update statement:

    The trigger:

    ALTER TRIGGER upd_PayrollEmployee

    ON Payroll_employees

    AFTER update

    AS

    IF COLUMNS_UPDATED() & 2 = 2

    INSERT mylog (Date_of_change, Field, OldValue, NewValue)

    SELECT GETDATE(), 'firstname', d.firstname, i.firstname

    FROM inserted i JOIN deleted d on i.employee_code = d.employee_code

    AND d.firstname <> i.firstname

    IF COLUMNS_UPDATED() & 4 = 4

    INSERT mylog (Date_of_change, Field, OldValue, NewValue)

    SELECT GETDATE(), 'surname', d.surname, i.surname

    FROM inserted i JOIN deleted d on i.employee_code = d.employee_code

    AND d.surname <> i.surname

    IF COLUMNS_UPDATED() & 8 = 8

    INSERT mylog (Date_of_change, Field, OldValue, NewValue)

    SELECT GETDATE(), 'department', d.department, i.department

    FROM inserted i JOIN deleted d on i.employee_code = d.employee_code

    AND d.department <> i.department

    IF COLUMNS_UPDATED() & 16 = 16

    INSERT mylog (Date_of_change, Field, OldValue, NewValue)

    SELECT GETDATE(), 'email', d.email, i.email

    FROM inserted i JOIN deleted d on i.employee_code = d.employee_code

    AND d.email <> i.email

    GO

    The update:

    UPDATE Payroll_employees SET

    firstname = h.firstname, surname = h.surname, department =h.department , email=h.email

    FROM HR_employees h

    WHERE Payroll_employees.employee_code = h.employee_code

    and (Payroll_employees.firstname <> h.firstname

    OR Payroll_employees.surname <> h.surname

    OR Payroll_employees.department <> h.department

    OR Payroll_employees.email <> h.email)



    Colleen M. Morrow
    Cleveland DBA