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

MS SQL Server Discussion :

Comment se servir de inserted et deleted lors d'un update


Sujet :

MS SQL Server

  1. #1
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 213
    Points
    213
    Par défaut Comment se servir de inserted et deleted lors d'un update
    Bonjour,

    Je me retrouve face a un problème un peu insoluble.

    Je crée des trigger sur une table, nous allons prendre pour l'exemple une clé commande.

    Les clés primaire de ma table commande sont l'année de commande et le numéro de commande.

    je décide de faire un update sur un groupe pour changer tout les numéro de commande d'une année.

    Ce qui m'embette la est que j'ai changé une composante de ma clé primaire, comment puis je relier les données insérée dans ma table inserted et dans la table deleted pour savoir quel enregistrements correspondes?

    ps : bien sur dans mon exemple j'ai simplifié, je n'ai aucune logique sur laquelle me basé pour me dire que je vais modifier une partie de ma clé mais que je peux utiliser ça ou ça ou ça.
    Car en fait je retrouve se problème dans un utilitaire qui me génère dynamiquement des triggers pour l'ensemble de ma base de donnée.

    Il me faudrait par exemple un n° d'insertion dans deleted et inserted, mais je ne trouve la description de la table nulle part sur le net, si j'ai bien compris elle contient uniquement les lignes affectée par mon opération et aucune information système supplémentaire.

    Ou alors un moyen (autre que un curseur) de parcourir mes donnée dans l'ordre de leur insertion car et cela reste une supposition elles sont j'espère ajoutée dans le même ordre dans les 2 tables.
    Fabian M. - DBA Sql server 2008R2.
    Apprenti Admin Système 2008 R2
    Développeur SSRS, SQL
    Développement C# en hobby

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 839
    Points : 52 932
    Points
    52 932
    Billets dans le blog
    5
    Par défaut
    Ce qui m'embette la est que j'ai changé une composante de ma clé primaire, comment puis je relier les données insérée dans ma table inserted et dans la table deleted pour savoir quel enregistrements correspondes?
    Vous ne pouvez pas, sauf si vous disposez d'une contrainte d'unicité not null.

    La technique consiste à rajouter une colonne temporaire dans laquelle on va stocker la valeur actuelle de la clef pour servir de colonne de recollement.

    Enfin il faut penser à débrancher les contraintes d'intégrité référentielles puis les rebrancher.

    Evidemment le plus simple aurait été de passer par une vue ce qui permet de ne pas modifier les données de la table... Mais il est vrai que les recommandations du dr. Codd créateur des SGBD relationnels sont très rarement appliquées... Dommage !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [2.x] Formulaires imbriqués, ArrayCollection, delete lors d'un update
    Par symfony_dev dans le forum Symfony
    Réponses: 1
    Dernier message: 02/05/2012, 21h02
  2. Comment se servir de la tangente en c++?
    Par c++debut dans le forum C++
    Réponses: 1
    Dernier message: 08/04/2006, 11h52
  3. Probleme d'insertion dans SQLSrv lors d'un traitement massif
    Par Bradarys dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/12/2005, 11h27
  4. Comment savoir si une insertion a marché ?
    Par saucisson dans le forum Access
    Réponses: 7
    Dernier message: 27/09/2005, 13h53
  5. Réponses: 2
    Dernier message: 06/12/2004, 14h43

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