2010-05-03 3 views
1

Quelle est l'utilité de la fonction mysql_rollback() en PHP?Quelle est l'utilité de la fonction mysql_rollback() en PHP?

Comment est-il utilisé? s'il vous plaît me expliquer avec quelques exemples,

PS: S'il vous plaît Ne me donnez pas le lien php.net ou site mysql, j'ai besoin de la langue AUTEUR pour le comprendre, je dois la façon de développeur pour comprendre ... J'espère que vous comprenez ...

Merci d'avance.

MISE À JOUR

si j'ai mis à jour quelque chose dans une table puis réinitialiser la valeur précédente en utilisant cette fonction?

+1

Vous ne devez pas dicter la façon dont les gens répondent. En cas d'occasion, vous trouverez que la documentation _does_ offre la meilleure explication. –

+1

Aww, peut-être qu'il n'est pas un locuteur natif anglais et les docs ne sont pas disponibles dans sa langue?Peut-être qu'il le veut paraphrasé, comme un étudiant l'entend d'un enseignant? – Konerak

+0

+1 konerak..Thanks –

Répondre

1

Une transaction est un moyen de garantir que toutes les instructions ALL réussissent, sinon aucune.

Par exemple, pour transférer de l'argent du compte bancaire de Bob à Alice, on peut le faire:

MISE À JOUR compte SET montant = montant - 100 WHERE nom = 'Bob'; Comptes UPDATE montant SET = montant + 100 WHERE nom = 'Alice';

Mais imaginez si quelque chose ne va pas (le serveur tombe en panne à cause d'une coupure de courant) après la première déclaration. La banque a maintenant déduit 100 dollars de Bob, mais Alice n'a rien eu!

Pour éviter cela, nous utilisons une transaction. Comme l'a expliqué Etan: vous commencez d'abord, puis vous exécutez toutes les déclarations. Si tout s'est bien passé, alors COMMIT. Seulement alors les modifications sont sauvegardées.

Si quelque chose ne va pas (par exemple, il n'y a pas de compte pour Alice), vous pouvez ROLLBACK, ou le serveur va ROLLBACK si quelque chose ne va pas très bien (la puissance tombe en panne).

Pour répondre à votre mise à jour Si vous avez mis à jour quelque chose dans une table, vous pouvez réinitialiser la valeur précédente en utilisant cette fonction que si vous avez commencé avec BEGIN et n'a pas encore COMMIT, oui.

+0

Mais si je n'utilise pas de concept de transaction et que je mets simplement à jour une ligne, alors j'ai besoin de l'ancienne valeur, puis-je l'obtenir en utilisant cette fonction? –

+0

"Pour répondre à votre mise à jour Si vous avez Upda ...." en réponse de cette partie: J'ai déjà exécuté la requête de mise à jour, c'est-à-dire la requête de mise à jour simple, la mise à jour a été faite, MAINTENANT je peux utiliser cette fonction mysqk_rollback() en PHP? –

+0

Non, désolé. Si vous mettez à jour une ligne, l'ancienne valeur est perdue. Seulement si vous avez commencé avec BEGIN ou AUTOCOMMIT était 0, vous pouvez ROLLBACK. – Konerak

1

Cela émet une instruction ROLLBACK qui annule la transaction en cours.

1

mysql_rollback() annule la transaction en cours. Si vous n'êtes pas familier avec les transactions, je suggérerais quelques lectures de Wikipedia. C'est un concept extrêmement utile.

4

Les transactions peuvent être utilisées dans MySQL si vous voulez exécuter plusieurs instructions en même temps. Vous envoyez BEGIN pour démarrer une transaction, puis envoyez mysql_query -s pour les instructions que vous souhaitez exécuter. Ces instructions sont exécutées si vous envoyez maintenant COMMIT ou annulées sans aucun effet si vous envoyez ROLLBACK. Donc, à votre question supplémentaire: ROLLBACK annule les requêtes que vous avez envoyées avant et revient à l'ancienne valeur dans la base de données. Cependant, une fois que vous avez commis, vous ne pouvez plus revenir en arrière puisque la transaction est alors terminée.

+0

Mais si je n'utilise pas de concept de transaction et que je mets simpy à jour une ligne, alors j'ai besoin de l'ancienne valeur, puis-je l'obtenir en utilisant cette fonction? –

+0

Non. Cela ne fonctionne que si vous avez commencé une transaction. – pritaeas

Questions connexes