Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : TRIGGER AFTER / BEFORE [ SQL Server, MSDE, SQL Express / Divers ] (vladam)

samedi 21 octobre 2006 à 19:02:21 | TRIGGER AFTER / BEFORE

vladam

Administrateur CodeS-SourceS
hello, j'ai un trigger :

CREATE

TRIGGER dbo.IsAuthDeleted

ON dbo.amp_users_roles

after

delete

AS

BEGIN
END

mais je voudrais que ce trigger s'exécute AVANT un delete.
Je voulais mettre :

CREATETRIGGER dbo.IsAuthDeleted

ON dbo.amp_users_roles

before delete

AS

BEGIN
END



mais SQLServer ne veut pas du before dans ce cas.

Quel solution ??

vladam
(pour vous servir :) )

samedi 21 octobre 2006 à 19:32:46 | Re : TRIGGER AFTER / BEFORE

skweeky

Membre Club Administrateur CodeS-SourceS
Bonjour,

Pourquoi vouloir l'executer avant ?

Il n'y a pas de trigger BEFORE sur SQL Server, seul les validations de contraintes se font "avant" l'opération.

Il existe cependant un Trigger INSTEAD OF dans lequel on ecrit le code qui doit effectuer l'action.

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration

samedi 21 octobre 2006 à 22:08:20 | Re : TRIGGER AFTER / BEFORE

vladam

Administrateur CodeS-SourceS
et bien , disons que dans une table, un des champs "bit" autorise ou non l'effacement du record.
Ce que je veux, c'est un trigger sur ma table, qui controle que le record devant être deleté a bien le champ à True, et sinon, annule le delete.
cela me permettra d'assurer l'intégrité de la base de données, même si le développeur oubli de faire la vérification.

Une solution ?

vladam
(pour vous servir :) )

dimanche 22 octobre 2006 à 12:26:53 | Re : TRIGGER AFTER / BEFORE

skweeky

Membre Club Administrateur CodeS-SourceS
Pour annuler le DELETE tu peux executer ROLLBACK dans un TRIGGER AFTER, celà aura pour effet d'annuler le DELETE qui a déclenché le TRIGGER.

Autre question, est ce que tu auras plusieurs enregistrements supprimés ou 1 seul à la fois dans chaque DELETE ?

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration

dimanche 22 octobre 2006 à 18:41:47 | Re : TRIGGER AFTER / BEFORE

Malkuth

Membre Club
Réponse acceptée !
Je suis partiellement d'accord avec christian le rollback est bien mais il oblige a tenir compte du contexte (la transaction étant entièrement annuler, ce n'est pas forecement l'effet souhaiter) pour ma part voilà ce que je ferais:

CREATE TRIGGER.IsAuthDeleted
   ON dbo.amp_users_roles 
   INSTEAD OF DELETE 
AS
BEGIN
   DELETE FROM dbo.amp_users_roles WHERE ID IN (SELECT ID FROM deleted WHERE AuthFlag=0);
END

Le trigger sera lancer directement à la place du traitement normal , mais il ne sera pas relancer une seconde fois (Pas de récursivité) lors du l'appel DELETE ...

Pour quelques infos sur les triggers SQLServeur va voir la tutos :
http://www.sqlfr.com/tutoriaux/MS-SQL-SERVER-DEBUTER-AVEC-TRIGGERS_449.aspx



Cette discussion est classé dans : trigger, before, dbo, after, createtrigger


Répondre à ce message

Sujets en rapport avec ce message

Trigger before delete [ par RMI ] Bonjour,Je souhaite créé un trigger sur la suppression d'enregistrement d'un table T1. Un table T2 est lié avec T1 par une référence de clé étrangère. [MSsql2005] Excecution de trigger FOR et AFTER [ par Arthenius ] Bonjour a tousj'ai une petite question.j'ai plusieurs trigger qui s'exécute sur une tableJ'aimerais savoir si les TRIGGER en FOR INSERT s'exécute avan trigger [ par souma199 ] j'aimerai savoir une idèe sur le trigger et son role MYSQL, TRIGGER, OLD, NEW [ par Flux__ ] Bonjour, J'ai un problème de trigger sous MySQL. Je souhaiterais supprimer un enregistrement si il existe déja et inserer le nouveau à la place. Je m Proc Stock - Algo [ par cbu ] Bonjour,voila j'ai cette proc stock :set ANSI_NULLS ONset QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[sp_UserLogin]     @pi_Login Varchar(50)   , @pi Encore et toujours transaction... [ par Malkuth ] Bijours,Encore des questions sur les transactions !Si j'ai une procedure stocké avec Transaction et qu'elle déclenche un trigger qui utilise un autre Problème de suppression [ par cbu ] Bonjour,j'ai ceci :declare @IBID intset @IBID = 50    DELETE FROM dbo.mnBoIB     WHERE (dbo.mnBoIB.IBID=@IBID)    AND (@IBID not in (SELECT DISTINCT d probleme de trigger sous oracle [ par EmacLi ] Bonjour à tous.Voila, j'ai un petit trigger qui ne fonctionne pas.J'aurais voulu l'avi d'un expert:CREATE OR REPLACE TRIGGER nomTrigger BEFORE INSERT Trigger ??? [ par BasicInstinct ] bonjour tout le monde,je cherche à remplacer des caractères parasites à l'insertion ou modification de données effectuées par un programme tierce ( do trigger avec timer [ par soumia83 ] salut j'aimerai bien savoir si on peut realiser un trigger qui se declanche par exemple chaque seconde qui veux dire qu'on doit avoir un timer qui le


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.