IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Comment créer un trigger


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 288
    Par défaut Comment créer un trigger
    Bonjour,

    Je travaille sur sql server 2005. Je veux créer un trigger sur un "delete" dans une table. C'est-à-dire si je fais un delete sur la table1 je veux que le trigger fasse un delete sur la table2.
    Voici ma requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TRIGGER DELETE_TABLE2
    ON dbo.TABLE2 AFTER DELETE
    AS 
    DELETE from TABLE2 where id=monID
    GO
    Question1: Comment je récupère monID sur la TABLE1?
    Question2: Puis je faire un trigger si les deux tables ne sont pas sur le meme serveur mais sachant que les deux serveurs sont liés ?
    Merci de lire les règles du forum et surtout celle là Message clair et précis.
    Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Votre trigger n'est pas ensembliste.
    Comment cela va-t-il fonctionner si vous supprimez plus d'une ligne de votre table ? Seule la ligne de TABLE2 qui a le dernier ID supprimé par votre requête sera supprimée.

    Vous devez donc plutôt écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TRIGGER TR_AD_TABLE1 -- TR : trigger| AD : AFTER DELETE
    ON dbo.TABLE1 AFTER DELETE
    AS 
    BEGIN
    	DELETE FROM dbo.TABLE2
    	FROM dbo.TABLE2 T2
    	INNER JOIN  DELETED D ON D.ID = T2.ID
    END
    GO
    Lisez la documentation sur la création de triggers pour comprendre l'utilisation des tables virtuelles INSERTED et DELETED

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Par défaut
    SALUT
    VOICI LA REPONSE A VOTRE QUESTION
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TRIGGER DELETE_TABLE2
    ON dbo.TABLE2 AFTER DELETE
    AS
    DELETE FROM nomServeur.Mabase.dbo.TABLE1 WHERE monID=(SELECT id FROM DELETED)
    END

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 288
    Par défaut
    Merci bien je vais tester ça.
    Merci de lire les règles du forum et surtout celle là Message clair et précis.
    Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Saharbi, votre requête est bonne mais peut être moins performante qu'une jointure. Dans votre code, on évalue en premier la sous requête, puis on effectue la suppression.
    Avec une jointure cela est direct ...

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 288
    Par défaut
    Bonjour à tous,

    SAHARBI,
    J'ai une erreur: Nom d'objet 'DELETED' non valide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TRIGGER DELETE_TABLE2
    ON dbo.TABLE2 AFTER DELETE
    AS
    DELETE FROM nomServeur.Mabase.dbo.TABLE1 WHERE monID=(SELECT id FROM DELETED)
    END
    Je ne sais pas comment faire car je veux récupérer l'id de l'enregistrement effacé.
    Merci de lire les règles du forum et surtout celle là Message clair et précis.
    Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.

Discussions similaires

  1. Comment créer un trigger (déclencheur) ?
    Par asouma_asma dans le forum SQL
    Réponses: 1
    Dernier message: 03/04/2014, 17h01
  2. Comment créer un trigger ?
    Par zahira-asmaa dans le forum SQL
    Réponses: 1
    Dernier message: 31/03/2014, 09h25
  3. Comment créer un trigger sous mysql 5?
    Par Invité dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 29/04/2009, 18h41
  4. Comment créer et executer un .EXE
    Par maher12 dans le forum Flash
    Réponses: 3
    Dernier message: 26/09/2002, 08h33
  5. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo