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 :

question simple sur les triggers


Sujet :

Développement SQL Server

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut question simple sur les triggers
    Bonjour,

    Je voudrais juste savoir si un trigger INSTEAD OF UPDATE qui effectue une insertion déclenchera le trigger AFTER INSERT ou non ?

    D'instinct je dirais que oui mais vu que c'est un trigger qui fait l'insertion, j'ai un doute.

    Merci d'avance,

    Griftou.

  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 858
    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 858
    Points : 52 996
    Points
    52 996
    Billets dans le blog
    6
    Par défaut
    Question trop vague !
    Votre trigger INSTEAD OF est sur une vue ou une table ?
    Quel est le code du trigger ???

    A +

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    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 170
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    Je dirais que oui. En revanche, si le trigger INSTEAD OF UPDATE fait un update sur la table (logique) il ne se re-déclenchera pas.

    Attention aussi : il faut vérifier le paramètre "Allow tiggers to yeild triggers" et le "max recursion level" qui sont nécessaires pour qu'un trigger puisse déclencher d'autres triggers.

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Je ne savais déjà pas qu'on pouvait faire des triggers sur des vues

    Sinon pour préciser, disons que j'ai une table, nommons la T , qui doit "versionner" un champ qu'elle contient.

    Un exemple concret de champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ID : INT 
    LANGUE : INT 
    VERSION : INT 
    TEXTE : VARCHAR(255)
    LASTUPDATE : DATETIME

    Pour l'exemple d'utilisation, disons que nous avons les records suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ID = 1
    LANGUE = 1
    VERSION = 1
    TEXTE = 'MACHIN'
    LASTUPDATE = 05/11/2011
     
     
    ID = 2
    LANGUE = 1
    VERSION = 1
    TEXTE = 'TRUC'
    LASTUPDATE = 06/11/2011
    J'ai déjà un trigger sur l'insertion qui met la date du système dans le champ LASTUPDATE.
    Pour la mise à jour, si l'utilisateur veut modifier le champ texte, à la place de faire un update du record, je veux créer un nouveau record avec le même id et la même langue mais avec version + 1 et le nouveau texte.

    Donc si on veut remplacer machin par bidule, j'aurais alors le record suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ID = 1
    LANGUE = 1
    VERSION = 2
    TEXTE = 'BIDULE'
    LASTUPDATE = 10/11/2011


    Voilà, j'espère que je suis plus clair et que cette manière de faire n'est pas trop abérante... Je ne suis pas du tout DBA de formation mais vu qu'on n'a pas de DBA dans la boite où je bosse, faut bien s'y essayer ^^.

    Merci d'avance.

    Griftou.

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Nouvelle petite question toujours sur les triggers.

    Quand on fait un update, les nouvelles valeurs se trouvent bien dans la table inserted et les anciennes dans deleted ?

    Est-ce correct ?

    Et dans le cas d'un trigger instead of update ?

    Griftou.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 858
    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 858
    Points : 52 996
    Points
    52 996
    Billets dans le blog
    6
    Par défaut
    OUI

    A +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Question simple sur les tableaux pour un initié
    Par bom8407@hotmail.com dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 01/03/2007, 11h22
  2. Réponses: 4
    Dernier message: 16/11/2006, 02h10
  3. question simple sur les select dynamiques
    Par grinder59 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/01/2006, 15h53
  4. Question urgente sur les triggers
    Par devdev dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/11/2004, 10h38
  5. Question simple sur les threads :)
    Par momox dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2003, 04h13

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