7
votes

Comment créer un déclencheur désactivé dans SQL Server 2005?

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?


0 commentaires

5 Réponses :


-1
votes

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. XXX

MSDN: Désactiver la gâchette (transact-sql) xxx

MSDN: Activer la gâchette (transact-sql)

SQL-Server hanter -All-déclencheurs-beggers-On-A-Basey-Disable-Disable-TRIGGERS-SERVERS-SERVERS


1 commentaires

Non, je veux un déclencheur désactivé au moment de la création.



-1
votes

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


1 commentaires

Non, je veux un déclencheur désactivé au moment de la création.



16
votes

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


0 commentaires

2
votes

La façon dont je l'ai fait était d'exécuter à la fois la création et la désactivation comme: xxx

Cela m'a permis de créer et de désactiver dans le même script sans que ça va.


0 commentaires

1
votes

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


2 commentaires

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.)