La instrucción contiene una cláusula OUTPUT sin error de cláusula INTO

Tengo un disparador que actualiza uno de los campos insertados (RootId) con el valor de la key primaria de identidad (MessageId) del mismo logging insertado. La actualización solo debería ocurrir cuando el campo RootId del logging insertado es 0. El desencadenador tiene este aspecto:

ALTER TRIGGER [dbo].[Trigger_RootIdUpdate] ON [dbo].[Messages] AFTER INSERT AS BEGIN SET NOCOUNT ON; DECLARE @MessageId Int SELECT @MessageId = I.MessageId FROM INSERTED I UPDATE Messages SET RootId = @MessageId WHERE MessageId = @MessageId AND MessageId = 0 END 

Lo uso en Azure y cuando inserto una fila, me da el siguiente error:

La tabla de destino 'dbo.Messagess' de la statement DML no puede tener activadores habilitados si la instrucción contiene una cláusula OUTPUT sin la cláusula INTO.

El mismo disparador funciona en mi MS SQL real 2012. Supongo que hay una diferencia en la configuration, pero no entiendo qué intenta decirme.

¿Estoy sobrecomplicando algo? ¡Gracias!

Creo que puede estar relacionado con lo que escribió Anthony Horne.

¿Esto funciona?

 ALTER TRIGGER [dbo].[Trigger_RootIdUpdate] ON [dbo].[Messages] AFTER INSERT AS BEGIN UPDATE Messages SET Messages.RootId = INSERTED.MessageId FROM Messages Msg JOIN INSERTED ON Msg.MessageId = INSERTED.MessageId WHERE Msg.MessageId = INSERTED.MessageId AND INSERTED.RootId = 0; END