stored procedures – écriture d'erreurs dans une autre table

J'ai deux tables et une procédure stockée simple. Je veux utiliser la procédure stockée pour insert dans table1 avec l'un des parameters étant la key primaire.

Voici où j'ai des problèmes:

Je veux l'avoir de sorte que si la key parm / primary que l'user a input dans la procédure stockée et que l'exécution est déjà sur la table, alors il écrit les champs dans une seconde table ainsi que la description de l'erreur.

Comment capturer / afficher cette information d'erreur?

Procédure stockée (sans la journalisation des erreurs):

CREATE PROCEDURE procedure1 @Primary INT, @Info NVARCHAR AS BEGIN SET NOCOUNT ON INSERT INTO Table1 ( Primary , Info ) VALUES ( @Primary , @Info ) END 

Merci

 CREATE PROCEDURE dbo.InsertSomething ( @PrimaryKey INT , @Info NVARCHAR(MAX) ) AS BEGIN IF EXISTS (SELECT 1 FROM dbo.Table1 WHERE ID = @PrimaryKey) BEGIN INSERT INTO dbo.Table2 (ID, Info) VALUES (@PrimaryKey, @Info); RAISERROR (15600,-1,-1, 'Your custom message'); END ELSE BEGIN INSERT INTO dbo.Table1 (ID, Info) VALUES (@PrimaryKey, @Info); END END 

Tout ce que vous avez à faire est une simple vérification si l'logging existe déjà dans la première table, et si elle ne fait que l'insert dans l'erreur et de lancer.