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 :

Trigger : "corriger" les données mises à jours


Sujet :

Développement SQL Server

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut Trigger : "corriger" les données mises à jours
    Bonjour,

    Je souhaite faire un trigger sur une table qui contient :
    - des colonnes permettant de stocker une adresse
    - une colonne contenant un flag "geocoding"
    - une colonne contenant la date de la dernière résolution d'adresse
    - deux colonnes contenant les coordonnées GPS de l'adresse

    Lors d'une mise à jour des colonnes servant à stocker l'adresse, je souhaite :
    - passer à zéro le flag "geocoding"
    - passer à zéro les coordonnées GPS

    Je fais assez rarement des triggers, et du coup, je sais pas trop quel type de trigger utiliser : AFTER, INSTEAD OF ?

    Je serais tenté de mettre à jour directement INSERTED sur l'ensemble des lignes où les colonnes d'adresse sont différentes de celles de DELETED, mais il me semble que INSERTED est read-only.

    Si je fait un AFTER et que je mets à jour la table, je ne risque pas de déclencher une boucle récursive infinie ?
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    En fait, j'hésite entre :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    create trigger trg_after_upd_crm_fi
    on crm_fi
    after update
    as
    begin
    	update CRM_FI
    	set ConfidGeo = 0, Latitude = 0, Longitude = 0
    	where i.ID in (
    		select ID
    		from inserted i inner join deleted d on d.id = i.id
    		where i.land <> d.land or i.plz <> d.plz or i.ort <> d.ort or i.f5010 <> d.f5010
    	)
    end;

    Et un instead of.
    Au détail près que les colonnes de la table peuvent être modifiées à tout moment, et que du coup j'imagine qu'il faudra réécrire la requête instead of tous les 4 matins pour refléter les colonnes ajoutées/supprimées.
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Corriger une macro de mise à jour
    Par lolonico dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 26/08/2008, 15h41
  2. Réponses: 1
    Dernier message: 12/09/2007, 16h22

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