Guest azazel Posté 9 Septembre 2004 Posté 9 Septembre 2004 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+
Titag Posté 9 Septembre 2004 Posté 9 Septembre 2004 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.
xpatval Posté 9 Septembre 2004 Posté 9 Septembre 2004 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
Titag Posté 9 Septembre 2004 Posté 9 Septembre 2004 Oui c'est vrai, comme le dit xpatval tu peux simplifier... BEGIN; Requete de modification/Suppression COMMIT; Et c'est reglé
petit-ourson Posté 9 Septembre 2004 Posté 9 Septembre 2004 (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é 9 Septembre 2004 par petit-ourson
Guest azeitona Posté 11 Septembre 2004 Posté 11 Septembre 2004 il doit surement exister quelques magouilles pour faire des transactions avec mysql je pense....
petit-ourson Posté 11 Septembre 2004 Posté 11 Septembre 2004 (modifié) ... avec es tables de type innoDB non ? Modifié 11 Septembre 2004 par petit-ourson
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant