Trouver les changements après UPDATE : SQL

le_joker_fou Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   -  
jee pee Messages postés 31982 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Tout comme mysql_insert_id() qui renvoi le dernier id inséré, je souhaiterais savoir si il existe une fonction qui retourne le ou les champ(s) qui ont été modifié (avec comble du bonheur l'ancienne valeur : j'en demande de trop ^^).

Exemple :
membre
- login : test
- password : test

UPDATE membre SET login=toto

La fonction me renverrai login=test.

Merci.

1 réponse

  1. jee pee Messages postés 31982 Date d'inscription   Statut Modérateur Dernière intervention   10 015
     
    Salut,

    Mysql, je ne connais pas.

    Mais par exemple dans Oracle cela n'existe pas. Si on souhaite tracer les mises à jour il faut alimenter des logs avec un trigger database. Du style :

    CREATE OR REPLACE TRIGGER Log_membre 
    AFTER UPDATE ON membre 
    FOR EACH ROW 
    WHEN (new.login != old.login) 
    BEGIN 
        INSERT INTO membre_log (membre_id, Log_date, login, Action) 
           VALUES (:new.membre_id, SYSDATE, :old.login, 'MAJ LOGIN'); 
    END; 


    Et donc la table membre_log contient toutes les valeurs successives du login.

    cdlt

    Un étranger, c'est un ami qu'on n'a pas encore rencontré.
    0