Lorsque vous utilisez Oracle, vous pouvez créer un déclencheur désactivé spécifiant le mot désactivé avant le corps de la gâchette. Comment puis-je obtenir le même effet sur SQL Server? P>
5 Réponses :
Dans Management Studio Développez le dossier de déclencheur sous tableau et cliquez avec le bouton droit de la souris sur la gâchette et désactivez. MSDN: Désactiver la gâchette (transact-sql) P> MSDN: Activer la gâchette (transact-sql) p> SQL-Server hanter -All-déclencheurs-beggers-On-A-Basey-Disable-Disable-TRIGGERS-SERVERS-SERVERS P> P>
Non, je veux un déclencheur désactivé au moment de la création.
T-SQL fournit une déclaration de déclenchement désactivée qui accomplit la même chose. Vous pouvez trouver les détails ici: Désactiver la syntaxe de déclenchement p>
Non, je veux un déclencheur désactivé au moment de la création.
Si vous devez vraiment créer la gâchette désactivée, Créez-le et désactivez-le dans une transaction:
begin tran go create trigger t_i on t after insert as begin /* trigger body */ end go disable trigger t_i on t commit go
La façon dont je l'ai fait était d'exécuter à la fois la création et la désactivation comme: Cela m'a permis de créer et de désactiver dans le même script sans que ça va. P> p>
Si vous préférez une solution qui ne nécessite pas de transaction, mais qui élimine également les chances de la cuisson de déclenchement et qui fait sa chose entre le moment, il est créé et le moment où il est désactivé, vous pouvez créer la gâchette avec Fondamentalement, aucun code de code, puis le désactiver, puis la modifier pour inclure son corps réel:
create trigger dbo.MyTrigger on dbo.MyTable after insert as declare @Foo int; --Trigger body must have at least a statement (or an "external name") so that's why the above dummy declare. go disable trigger dbo.MyTrigger on dbo.MyTable; go alter trigger dbo.MyTrigger on dbo.MyTable after insert as declare @Foo int; --Remove above declare statement and insert actual trigger code here. go
Cela ne semble pas vraiment fonctionner, car la modification de la gâchette l'active immédiatement. Voir: dba.stackexchange.com/q/159022
Non. (Je viens de faire un test.)