Sorry - its a little difficult to explain... and perhaps we don't have it correct yet.
We have primary keys on all our tables - required for replication.
Its related to that we're using bi-temporal data and the Primary Key includes two sets of date ranges which are being changed by the trigger.
However, we think we can re-arrange the code to move the self join to before the keys have been updated which may remove the self join.
Would be great to see more implementations of SQL:2011 - Wikipedia, the free encyclopedia