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 :

création d'un trigger


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 8
    Par défaut création d'un trigger
    Bonjour,

    Voila j'aimerai mettre a jour une table de ma base de données, grâce a une table dans une autre base de données.

    Le principe est simple, je veux mettre à jour ma table si les identifiants sont pareil ou inserer dans ma table si cela est un nouveau identifiant

    Et je veux que cela se fasse tout les jours à la même heure

    est ce que je dois utiliser un trigger?
    Si oui, pouvez-vous me donner un coup de pouce, surtout pour savoir comment mettre une table a un trigger (si cela est possible)

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Par défaut
    Je te conseille de ne pas utiliser de trigger. Un trigger agit sur chaque requête d'insertion,de modification ou de suppression.
    Il serait plus simple dans ton cas de créer une procédure stockée qui serait appeler tous les jours à la même heure par un job SQL.
    Le job repose sur le même principe que les tâches planifiée de windows. Tu ne devrais donc pas avoir trop de soucis à en mettre un en place.

    Si tu as d'autres questions, n'hésites pas à poster.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 8
    Par défaut
    Ok, merci pour le conseil.

    Je vais essayé.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 8
    Par défaut
    Pour planifier la tache, il n'y a pas de problème, mais par contre j'ai du mal avec la procédure stockée.

    Pourrai me dire comment utiliser la synthase?

    En fait, je dois mettre à jour une table de ma base de données, grâce a une autre table dans une autre base de données, le pirncipe est si il y a une un modification dans l'autre base de données, alors je met a jour ma table, s'il y a eu une insertion alors je dois l'insérer dans ma table.

    j'ai pensée :
    CREATE PROC MAJ_RIVOLI (@code int, @nom nvarchar(100),@code2 int, @nom2 nvarchar(100))
    AS

    SELECT * FROM rivoli.RIVOLI WHERE rivoli.RIVOLI.RIV_Id = @code AND rivoli.RIVOLI.RIV_Intitule = @nom

    SELECT * FROM dbo.RIVOLI WHERE dbo.RIVOLI.RIV_Id = @code2 AND dbo.RIVOLI.RIV_Intitule

    if (@code == @code2)then

    update dbo.RIVOLI SET RIV_Intitule = @nom where RIV_Id = @code

    else

    if (@code <> @code2) then

    INSERT INTO dbo.RIVOLI(RIV_Id,RIV_Intitule) VALUES (@code,@nom)

    mais comme je n'ai jamais fait de procédure, je ne pense pas que cela doit être bon.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Par défaut
    Tout d'abord, essaie de faire un algorithme de ta mise à jour en pseudo code. Ensui te il tefaut analyser ce que tu doit utiliser.

    Dans ton cas, tu dois faire l'équivalent d'un trigger mais en décalé et en une opération. Je te conseille donc d'ajouter à ta table un flag d'activité. Celui-ci prend trop valeur.

    0 : nouvel enregistrement (insert)
    1 : enregistrement modifié (update)
    2 : enregistrement mis à jour (transfert autres base)

    Il te faudra ensuite faire deux requêtes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    INSERT INTO baseDestination.dbo.maTable (liste_champ) SELECT liste_champ FROM baseSource.dbo.maTable WHERE FLAG=0
    UPDATE baseDestination.dbo.maTable 
    SET champ=source.champ,champ2=source.champ2,...
    FROM baseSource.dbo.maTable WHERE FLAG=1
     
    UPDATE baseSource.dbo.maTable SET FLAG=2 WHERE  FLAG=0 OR FLAG=1
    Voici un exemple d'une série de requête que tu peux mettre dans ta procédure.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/05/2006, 17h04
  2. Aide sur la création d un Trigger
    Par hatoug dans le forum Oracle
    Réponses: 20
    Dernier message: 16/05/2006, 16h26
  3. création d'un trigger générique
    Par orphenou dans le forum Développement
    Réponses: 5
    Dernier message: 31/03/2006, 11h44
  4. Problème à la création d'un trigger
    Par Vincent Stryckmans dans le forum SQL
    Réponses: 3
    Dernier message: 20/10/2005, 11h27
  5. [Oracle] Aide pour la création d'un trigger
    Par Sonic dans le forum Administration
    Réponses: 14
    Dernier message: 04/11/2004, 19h54

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