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 inserant une ligne auto en cas d'UPDATE de 0 lign


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Trigger inserant une ligne auto en cas d'UPDATE de 0 lign
    Salut la communauté

    Mon probleme est tout simple : je fais un UPDATE sur une table, si cet update n'affect aucune ligne et bien je veux en ajouter une avec les valeur de mon UPDATE.
    -----------
    ok je crée un trigger,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE TRIGGER TR_VERIFEXIST ON TABLESTEST
    FOR   UPDATE 
    AS
    DECLARE 	@var1 integer,
    		@var2 integer
    SELECT 	@var1=var1 ,
    	 @var2=var2
    FROM INSERTED
     
    IF NOT EXISTS(SELECT * FROM TABLESTEST  WHERE
    	@var1=var1  AND
    	 @var2=var2)
    BEGIN
     
    	INSERT INTO TABLESTEST  (var1,var2)
    	VALUES (@var1,@var2)
    END
     
    IF @@Error <> 0 
    BEGIN
    ROLLBACK 
    RAISERROR ('Erreur',16,1)
    RETURN
    END
    Voici la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     UPDATE TABLETEST SET nb=nb+1 WHERE var1=2 AND var2=5
    -----------
    Es ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 	@var1=var1 ,
    	 @var2=var2
    FROM INSERTED
    permet de recuperer la ligne meme s'il n'y a pas d'update ?

    Est il possible de recuperer les valeurs SET dans le UPDATE ( c a d : "nb").


    A bientot
    Merci

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Es ce que
    Code:
    SELECT @var1=var1 ,
    @var2=var2
    FROM INSERTED
    permet de recuperer la ligne meme s'il n'y a pas d'update ?
    je vois pas vraiment à quoi corresponde var1 et var2 ( pas @var1 et @var2 ).

    Est il possible de recuperer les valeurs SET dans le UPDATE ( c a d : "nb").
    En utilisant une procédure stockée, sans problème, sinon je vois pas trop.[/code]

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     CREATE TABLE TABLETEST ( 
    var1 INTEGER NOT NULL, 
    var2 INTEGER NOT NULL, 
    nb INTEGER NOT NULL,
    CONSTRAINT PK_PRS PRIMARY KEY (var1,var2)
    voici ma table, si : "UPDATE TABLETEST SET nb=1 WHERE var1=2 AND var2=5;" n'affecte aucune ligne, je veux que mon trigger insert cet ligne.

    :

  4. #4
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    pourquoi faire ça alors que si tu fais un SELECT tout con dès le début t'es tranquile :
    Tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT var1
    FROM TABLETEST 
    WHERE var1=2 AND var2=5
    Si ça ne te renvoie rien alors tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TABLETEST (nb)
    VALUES (1)
    Sinon tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE TABLETEST 
    SET nb=1 
    WHERE var1=2 AND var2=5
    Pour faire ça il te suffit d'une simple procédure stockée.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    OK je vais faire ca

    Merci !!!!!!!!!!

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

Discussions similaires

  1. [DOM][langage ???]insérer une ligne dans un xml
    Par atchoumen dans le forum APIs
    Réponses: 1
    Dernier message: 03/08/2007, 13h32
  2. Inserer une permiere ligne dans une table
    Par PizzaBer dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/01/2007, 10h13
  3. Réponses: 1
    Dernier message: 08/09/2006, 18h23
  4. [VBA-E] Inserer une ligne vide dans Excel
    Par monsurf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/07/2006, 16h48
  5. [VBA-E]inserer une ligne
    Par massilia80 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/03/2006, 15h40

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