• Jimi, that's not quite correct. Here's what it says in BOL:

    output_table cannot:

    • Have enabled triggers defined on it.
    • Participate on either side of a foreign key constraint.
    • Have CHECK constraints or enabled rules.

    You can use it on any table regardless of configuration, it's only the output table where you're landing the results that has restrictions.

    The output clause is one of the really nice improvements in 2005. I've seen all too many instances where developers were essentially inserting an alternate primary key so that they could insert multiple rows at once and still get the keys back. If they had used scope_identity() they would have been forced to insert the records one at a time which is not great for performance.

    Essentially the output clause exposes the logical inserted and deleted tables that were previously only visible within the trigger execution.