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 Procedure stockée trigger [ par AfKun ] Bonjour,J'ai un petit probleme... je dois faire une procedure suppAvion en plsql qui supprime un tuple dans la table avion  mais aussi les tuples dans procédures stockées pour remplir ma table historique [ par devap ] Bonjour;J'ai  cette PS je cherchais que chaque fois que l'utilisateur modifié la table T1 à partir d'une gridview  les premiers données (avant  update trigger erreur [ par sikove ] Salut, je suis crevé, à chaque fois que j'execute ce trigger j'ai cette erreur de sql server : Serveur : Msg 107, Niveau  16, État 1, Procédure rok, L création trigger sur mysql [ par Ninie972 ] Bonjour, Je crée un triger sur mysql:CREATE TRIGGER modif_etat AFTER UPDATE ON VOEUX FOR EACH ROWcodev int(2);BEGINSELECT code_voeux into codev FROM v Triggers imbriqués et table deleted [ par SharpMao ] Bonjour à vous,J'ai un petit problèmes de trigger avec SqlServer.J'ai deux triggers imbriqués, et j'aimerais savoir s'il est possible d'accéder aux do Ajouter un utilisateur dans un groupe local sans passer par xp_cmdshell [ par djodjo1989 ] Bonjour à tous,voila, je voudrais ajouter un utilisateur, disons HelpDesktop au groupe local Administrateurs par exemple.Or j'ai désactivé xp_cmdshell Correction de Trigger [ par 4rocky4 ] Bonjour tout le monde,Je voudrai créer des triggers qui permettent de mettre à jour des tables sous Oracle.Par exemple, si on modifie la clef primaire Requête FTS sur vue. [ par gillou1664 ] Bonjour tout le monde.Bon, je suis pas très bon en SQL et j'ai un petit soucis (enfin gros :p) : J'essaie d'utiliser une fonction de recherche de text


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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,374 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é.