Bonjour,

J'ai un trigger sur une table, qui, s'il y'a une erreur, fait le traitement suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BEGIN CATCH
		ROLLBACK TRANSACTION;
 
		DECLARE @MAIL_MSG VARCHAR(1024);
		SET @MAIL_MSG = ERROR_MESSAGE() + '<br><br>';
		EXEC msdb.dbo.sp_send_dbmail @profile_name = 'monProfil',
						@recipients = gringo@gringo.com',
						@subject = 'monTrigger',
						@body = @MAIL_MSG,
						@query = 'SELECT IDMESSAGE, IDPARENT, IDCUSTOMER, IDBILLINGSTATUS, IDOPERATORRESPONSE FROM INSERTED;',
						@query_result_separator = ',',
						@body_format = 'HTML';
 
		SET @MAIL_MSG = 'TR_AIU_SMSSENT_FAST : ' + REPLACE(@MAIL_MSG, '<br>', '');
		RAISERROR(@MAIL_MSG, 16, 1);
END CATCH;
Or quand une erreur se produit, SQL Server me retourne l'erreur suivante:

Msg 22050, Level 16, State 1, Line 0
Error formatting query, probably invalid parameters
Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 478
Query execution failed: Msg 208, Level 16, State 1, Server SQL, Line 1
Invalid object name 'INSERTED'.

Pourquoi n'est-il pas possible d'accéder à INSERTED dans le CATCH ?