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 qui se déclenche en fonction de la valeur d'une colonne


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 43
    Points : 21
    Points
    21
    Par défaut trigger qui se déclenche en fonction de la valeur d'une colonne
    Bonjour ,

    Je suis bloqué dans le développement d'un trigger .

    Contexte :

    Deux tables

    Mesure
    [ID_mesure] PK
    [valeur]

    Alerte
    [ID_alerte]PK
    [alerte]



    --> L'objectif du trigger est que , lors d'un insert dans Mesure , si la valeur est supérieur à 10 ; on insère une nouvelle ligne dans Alerte


    J'ai tenté ceci :

    Code : 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 trigger_test
       ON  dbo.mesure 
       AFTER INSERT
    AS 
     
    if 'valeur'>10
     
    BEGIN
     
    INSERT INTO dbo.alerte
    		VALUES ('2','ceci est une ligne')
     
    END
    GO

    Mais ca ne fonctionne pas ; Je n'arrive même plus à rajouter de ligne dans mesure.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Il y a deux problèmes dans ton trigger :
    1/
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IF 'valeur'>10

    ça, ça ne fonctionnera jamais.
    tu compares la chaine de caractères 'valeur' à la valeur 10

    Si tu veux utiliser la valeur de la colonne [valeur] de l'insert, il faut que tu utilises la pseudo table INSERTED :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT valeur FROM INSERTED

    2/
    le deuxième problème, c'est que tu peux insérer plus d'un ligne à la fois, tu dois envisager ce cas, et savoir ce que tu veux faire dans ce cas.
    Si dans ce cas, tu ne veux insérer qu'une alerte dans la table alerte, alors tu peux faire :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TRIGGER trigger_test
       ON  dbo.mesure 
       AFTER INSERT
    AS 
    IF EXISTS(SELECT * FROM INSERTED WHERE valeur > 10) 
    BEGIN
    	INSERT INTO dbo.alerte
    	VALUES ('2','ceci est une ligne')
    END
     
    GO

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 43
    Points : 21
    Points
    21
    Par défaut
    Ca marche !



    MErci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2013, 19h17
  2. [XL-2010] Colorer des lignes en fonction de la valeur d'une colonne
    Par antoninr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2013, 13h33
  3. Générer un onglet en fonction de la valeur d'une colonne d'une liste
    Par kreutzberg dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/05/2012, 09h09
  4. Réponses: 0
    Dernier message: 09/07/2011, 21h52
  5. [mysql 5.0] insert en fonction de la valeur d une colonne
    Par jota5450 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 06/08/2007, 10h15

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