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 :

Triggers on insert.


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut Triggers on insert.
    Bonsoir (bonne nuit)

    Je cherche a créer un triggers sous SQL Serveur.

    J'ai une table xx_clients et une table xx_livraisons. Je cherche a remplir l'adresse de livraison "principal" du client à l'aide des informations qu'il a saison lors de son inscription.

    J'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TRIGGER creer_adresse_livraison
    on xx_clients
    FOR INSERT
    AS
        INSERT INTO xx_livraisons (livr_client_id,livr_intitule,livr_nom,livr_prenom,livr_adresse,livr_complement,livr_cp,livr_ville,livr_pays,livr_edit,livr_sommeil)
         VALUES (client_id,client_nom+" - "+client_prenom,client_nom,client_prenom,client_adresse,client_complement,client_cp,client_ville,"France",1,0)
    Mais SQL Serveur n'aime pas trop.

    Si qqu pourrait m'aider. MERCI

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Poste le scripte de création des objects utilisés.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    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 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    Que voulez vous faire ????

    A +

  4. #4
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    Lorsqu'il y a un INSERT dans la table xx_client

    Je souhaite inserer dans la table xx_livraisons, un nouvel enregistrement à l'aide des parametres qui ont étaient utilisaient lors du INSERT dans la table xx_clients

    et je viens d'y penser., lorsqu'il y a un UPDATE dans la table xx_client, mettre a jour la table xx_livraisons.

    La table xx_livraisons contient les adresses de livraisons des clients. A son inscription le systeme doit créer 1 adresse de livraisons par defaut. Cette adresse est celle du client...

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par WOLO Laurent
    Poste le scripte de création des objects utilisés.
    J'ai fait une capture des tables concernées.
    Images attachées Images attachées  

  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 896
    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 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    Faire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TRIGGER E_I_LIV
    FOR INSERT
     
    AS
     
    INSERT INTO xx_livraisons
    SELECT ...
    FROM   xx_client C
           INNER JOIN inserted I
                 ON C.??? = I.???
    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/s...nsactsql/#L5.3

    A +

  7. #7
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    Je pensais que ca serait un peu plus simple comme sous Oracle avec les :new ...

    En plus le INSERT sur livraisons, va utiliser des informations que je vais definir en dur donc, je pense qu'il est preferable que je recup toutes les infos que j'ai besoin depuis le INSERTED, que je les stock dans des variables puis je fais mon INSERT sur xx_livraisons.

    Je vais lire votre article. MERCI

  8. #8
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    J'ai du mal avec les INNER JOIN

    J'ai testé ca, avant de m'y resoudre mais toujours une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TRIGGER creer_adresse_livraison
    on xx_clients
    FOR INSERT
    AS
     
    SELECT  client_id AS get_client_id, client_nom AS get_client_nom,client_prenom AS get_client_prenom,client_adresse AS get_client_adresse,client_complement AS get_client_complement ,client_cp AS get_client_cp,client_ville AS get_client_ville,client_pays AS get_client_pays 
    FROM INSERTED
     
    INSERT INTO xx_livraisons (livr_client_id,livr_intitule,livr_nom,livr_prenom,livr_adresse,livr_complement,livr_cp,livr_ville,livr_pays,livr_edit,livr_sommeil)
    VALUES (get_client_id,get_client_nom,get_client_nom,get_client_prenom,get_client_adresse,get_client_complement,get_client_cp,get_client_ville,get_client_pays,0,0)

  9. #9
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    Il y a surement plus beau mais ca marche en atendant de trouver mieux :

    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
    25
    26
    27
    28
    29
    30
    31
    CREATE TRIGGER creer_adresse_livraison
    on xx_clients
    FOR INSERT
    AS
     
    DECLARE @client_id INT,
        @client_nom VARCHAR(20),
        @client_prenom VARCHAR(20),
        @client_adresse VARCHAR(50),
        @client_complement VARCHAR(50),
        @client_ville VARCHAR(50),
        @client_cp INT,
        @client_pays VARCHAR(50),
        @livr_intitule VARCHAR(50);
     
    SELECT
    @client_id = client_id, 
    @client_nom = client_nom, 
    @client_prenom = client_prenom,
    @client_adresse = client_adresse,
    @client_complement = client_complement ,
    @client_cp = client_cp,
    @client_ville = client_ville,
    @client_pays = client_pays 
     
    FROM INSERTED;
     
    SET @livr_intitule = @client_nom + ' - ' + @client_prenom
     
    INSERT INTO xx_livraisons (livr_client_id,livr_intitule,livr_nom,livr_prenom,livr_adresse,livr_complement,livr_cp,livr_ville,livr_pays,livr_edit,livr_sommeil)
    VALUES (@client_id,@client_nom,@client_nom,@client_prenom,@client_adresse,@client_complement,@client_cp,@client_ville,@client_pays,0,0);

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

Discussions similaires

  1. Insert avec select sur table avec Trigger d'insertion
    Par bran_noz dans le forum Développement
    Réponses: 5
    Dernier message: 23/12/2005, 14h38
  2. pb trigger lors insertion enregistrment!
    Par tooneygirl dans le forum Oracle
    Réponses: 9
    Dernier message: 06/12/2005, 22h57
  3. Créer un trigger "before insert" avec SQL Server
    Par bubi dans le forum Développement
    Réponses: 2
    Dernier message: 14/11/2005, 10h12
  4. [trigger] update inserted?
    Par cosminutza dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/06/2005, 09h37
  5. Trigger et insert
    Par jf-nigou dans le forum Oracle
    Réponses: 5
    Dernier message: 16/02/2005, 16h45

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