Créer ou modifier le triggersur s'il existe

J'essaie de déterminer si je devrais créer ou modifier et triggersr. Mon code est ci-dessous.

IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL ALTER TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory AFTER INSERT AS RAISERROR ('Notify Compensation', 16, 10); else CREATE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION AFTER INSERT, UPDATE AS RAISERROR ('Notify Compensation', 16, 10); 

Les erreurs que je reçois sont:

  • Syntaxe incorrecte près d'autre
  • Créer un triggersur devrait être la seule déclaration en batch.

A quoi devrait ressembler ce code?

Si vous ne voulez pas que l'instruction create sortinggger soit SQL dynamic, vous pouvez faire quelque chose comme ceci:

 IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL exec sp_executesql N'DROP TRIGGER Sales.bonus_reminder'; GO CREATE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION AFTER INSERT, UPDATE AS RAISERROR ('Notify Compensation', 16, 10); 

Utiliser le SQL dynamic

 IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL EXEC(' ALTER TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory AFTER INSERT AS RAISERROR (''Notify Compensation'', 16, 10)' ); else EXEC(' CREATE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION AFTER INSERT, UPDATE AS RAISERROR (''Notify Compensation'', 16, 10)' );