Insertions multiples + gestion des erreurs

Eléphanteau du PHP | 44 Messages

20 mai 2009, 17:04

Salut,

Me voilà de nouveau confronté à un probleme de logique SQL.
Sur mon projet actuel, l'utilisateur a la possibilité d'ajouter une annonce sur le site. Cette annonce comporte des éléments stockés sur 4 tables différentes (l'annonce elle-même, l'adresse, un nombre x de fichiers et un log).

Comment faire pour inserer dans les 4 bases de facon intelligente?

Pour l'instant, je procède de facon linéaire:
  • - j'ajoute d'abord l'adresse si elle est définie ds la table adresses
    - je récupère l'id_adresse, j'ajoute ensuite l'annonce ds la table annonces
    - je récupère l'id_annonce, j'ajoute les x fichiers ds la table fichiers
    - j'ajoute une premiere entrée ds le log
Si lors de l'une des 4 étapes il y a une erreur , je fais un DELETE sur chaque entrée concerné et je renvois au formulaire, sinon je renvois sur l'annonce fraîchement ajoutée.

Est-ce une approche raisonnable ou serait-il plus malin de procèder autrement (table temporaire? autre?)
De plus, suite a mes recherches, je ne sais plus vraiment si se fier à l'id automatique (avec auto increment) est vraiment une bonne idée.

Merci!
Ludwig

ViPHP
ViPHP | 5924 Messages

21 mai 2009, 00:01

Des transactions peut être ?
Parce que c'est exactement le fonctionnement des transactions…

Eléphanteau du PHP | 44 Messages

21 mai 2009, 17:18

Effectivement, c'est parfaitement adapté à ma situation! Merci beaucoup!!