Aller au contenu

php, mysql et transaction


Sujets conseillés

Posté

Hello !

Je souhaite integrer les transactions dans mon applications, notamment au niveau de la création/modification/suppression d'enregistrement dans la base (de toute facon, ca n'a pas grand sens de le faire pour autre chose).

Cependant, j'ai du mal à voir l'algorithme à mettre en oeuvre.

Je vous livre donc le fruit de ma cogitation, afin que vous puissiez me dire si je me plante :

1) Extraction de la clef primaire de l'url (encodé, bien évidement)

2) Début de la transaction

2) Vérification de l'existence de la clef dans la base avec selection du record correspondant en mode 'lock in share mode', pour que le record soit consultable mais pas modifiable par une autre requete parallele..

3) Si la clef n'existe pas, redirection et fin de la transaction.

4) Si la clef existe, modification/suppression du record et de ses dépendances.

5) Si ca foire, roolback, sinon fin de la transaction.

Ai je bon ?

A+

Posté

Salut,

Les transactions n'existent pas chez mysql il me semble, ou alors dans les toutes dernières versions...

Tourne toi vers postgresql :)

Sinon ton algo semble correct.

Posté

Salut,

Heu, je vais peut-être dire des aneries, mais logiquement:

lors d'une création d'enreg dans une table, si celle-ci est bien agencée, la clé primaire, si définie en auto-incrément, sera donc créée automatiquement lors de l'insert. Il faut malgré tout tester l'existence de l'enregistrement en question, (donc tester l'existence des données, pas de la clé) avant l'insert.

Mais que veux-tu dire par "vérification de l'existence de la clé primaire" ?

Comment cette clé est-elle définie au départ ?

xpatval

Posté

Oui c'est vrai, comme le dit xpatval tu peux simplifier...

BEGIN;

Requete de modification/Suppression

COMMIT;

Et c'est reglé :)

Posté (modifié)

il faut également mettre ses tables en type innoDB pour pouvoir accéder aux transactions (à moisn que les dernières versions de mysql le fasse par défaut sur tous les types de table). Par contre je ne sais pas comment ils lock les tables.

Pourquoi vérifier l'existence de la clef ? Tu fais ton update si elle existe pas elle sera pas mise a jour. (logique)

Il existe egalement la commande replace qui joue le rôle du update ou insert dans le cas ou la clef n'existe pas (pas du tout normalisé)

Modifié par petit-ourson
Guest azeitona
Posté

il doit surement exister quelques magouilles pour faire des transactions avec mysql je pense....

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...