SQL

Résolu
Bonjour à tous,

voila je fais appel à vous car je débute dans le SQL, connaîtriez-vous par hasard une ligne de code qui permet de copier dans une table Bis les lignes qui ont été modifiées ou crées dans une table principale ?

je voudrais faire ça car ça me permettrait de voir d'un coup d'oeil ce que j'ai modifié dans ma table ...

merci d'avance et bonne journée
Configuration: Windows XP
Firefox 3.0.6

11 réponses

  1. T'es pas Tres net Dans ta demande pose bien ton pb avec code a l'appui
    1. Salut,

      Si tu as une date de modification dans ta premiere table, alors oui tu pourras le faire sinon...
      1. Voici le code que j'ai su faire pour le moment.

        CREATE TRIGGER Ajout_Ligne ON dbo.Evenement
        FOR INSERT
        AS
        DECLARE @A_Variable int

        SELECT @A_Variable = Numero FROM inserted
        INSERT INTO Table1(tableNom,Modificationtype,Chaine)
        VALUES ('Evenement','Modification enregistrement',@A_Variable)

        Quand un nouveau champ "numéro" de la table Evenement est créé , celui ci est copié vers la table1.

        Donc pour approfondir mon explication, je cherche à envoyer les champs qui sont modifiés/créés de la table Evenement vers la table1.

        Merci de ton aide !

        bonne journée
        1. Tu peux le faire à l'aide des declencheurs, même si t'as pas une colonne contenant la date de modification, tu peux dans ce cas recuprerer la date systeme.
          Sous Oracle les triggers (declencheurs) before insert et before update et before delete font l'affaire.
          1. donc je comprends un peu le systeme de déclencheur, mais ici dans mon code la copie ne se fait que quand c'est un nouveau champ qui est créé ... et pas avec ceux qui sont modifiés ...

            Je suis peut-être dans la gaz ce matin mais je vois pas du tout ^^

            Merci de votre aide !

            bonne journée
            1. Quel logiciel utilises tu ?

              Sous Wamp il y a une commande qui te permet de te sauvegarder dans un fichier texte tout ce que tu as taper (donc toutes les modifications/créations etc...)il se tape avant toute autre commande (sinon pas sauvegardé) et il faut la retaper a chaque fois qu'on redémarre Wamp (ou la console Mysql)

              \T C:\nom_fichier.txt

              Comme ceci tu as une trace de ce que tu as fait et c'est pas mal.
              1. bonjour,

                si tu veux que ça fonctionne lors de la modification, faudrait peut être dans ton FOR du CREATE TABLE après INSERT, mettre UPDATE ce qui donnerai :
                CREATE TRIGGER Ajout_Ligne ON dbo.Evenement
                FOR INSERT, UPDATE
                AS
                DECLARE @A_Variable int 


                ensuite pour le reste je sais pas trop car les triggers et moi nous sommes pas très amis!! :)
                1. oui ça fonctionne ! merci !

                  j'avais dit que je débutais et qu'en plus j'étais pas dans un bon jour ... ;)

                  par contre est-ce que je dois indiquer tout les champs de ma table ou il y a une solution pour qu'il les vérifie tous comme un grand ? ^^
              2. cool si cela fonctionne.

                Par contre, pour ta question, je sais pas trop.
                1. ok pas grave merci quand même ;)

                  je vais faire des tests et autres recherches, on ne sait jamais ^^

                  bonne journée

                  bizzzz
                  1. Il me semble qu'il faut specifier chaque champ... N'oublis pas de passer résolu puisque la quesiton de base est réolue ^^
                    1. oui merci c'est ma premiére fois sur comment ça marche alors je ne sais pas encore trop quoi faire ^^

                      merci du conseil

                      bonne journée