• Short answer:
    You want a dynamically-generated, static trigger.  That sounds contradictory but it's not.

    More detailed answer:
    You must meet two critical conditions here:
    1) the trigger must execute as quickly as possible.
    2) the trigger code must be generated rather than written by hand.

    When you consider those together, what you end up with is code that dynamically generates the trigger based on the current table definition (with control value(s) passed in as required).  But the generated code is static, i.e., column names, data types, etc. are not looked up at run time, but at trigger create time.

    SQL DBA,SQL Server MVP(07, 08, 09) "It's a dog-eat-dog world, and I'm wearing Milk-Bone underwear." "Norm", on "Cheers". Also from "Cheers", from "Carla": "You need to know 3 things about Tortelli men: Tortelli men draw women like flies; Tortelli men treat women like flies; Tortelli men's brains are in their flies".