Trouver les changements après UPDATE : SQL

Fermé
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 - 12 mai 2011 à 20:40
jee pee Messages postés 40718 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 janvier 2025 - 12 mai 2011 à 22:15
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.
A voir également:

1 réponse

jee pee Messages postés 40718 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 janvier 2025 9 506
Modifié par jee pee le 12/05/2011 à 22:16
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