Utilisation du commit et rollback avec ODBC ? - PHP - Programmation
Marsh Posté le 05-12-2002 à 11:52:57
Batman-Fr a écrit a écrit : j'ai quelques bases en SQL mais je n'ai jamais utilisé commit et rollback alors que ca a l'air d'etre essentiel. J'effectue mes requetes avec le driver ODBC en PHP. Malgré mes recherches, je n'ai trouvé aucun exemple de script utilisant commit et rollback. Pouvez-vous me donner un exemple succint s'il vous plaît afin que je vois comment on utlise ca? merci d'avance |
Quelle base de données (oracle, access, mysql ?)
Est ce que t'as déjà utiliser des "transactions" avec une base de donnée?
Bon, déjà, il me semble que mysql ne possède pas de système de transaction, du coup, pas de commit ou de rollback possible en php.
De plus, php fonctionne en système d'envoie immédiat des requêtes de mise à jour et donc sans passer par un cache au niveau de php, donc si la base de donnée n'a pas de système de transaction, je vois pas quand tu veux faire un commit ou un roolback.
Pour l'utilisation du commit et du rollback, de manière théorique, ca marche comme suit :
1) on démarre une transaction
2) on envoie les requêtes une par une
3) la base de donnée exécutes les requêtes et stockes les données modifié dans des tables temporaires
4-1) si une requête tombe en erreur, on fait un rollback et la base de donnée se contente d'oublier purement et simplement les mises à jour que tu lui avait demandé depuis le début de la transaction
4-2)si aucune requête tombe en erreur, tu fais un commit et là, la base de donnée stocke les modifications comme elle l'aurait fait s'il y avait pas eu de transaction
5) on referme la transaction et les requêtes suivantes sont géré comme d'habitude.
Bon, en pratique, du côté de la base de donnée, c'est surement pas géré tout à fait comme ça mais au moins, mon explication permet de mieux comprendre comment c'est fait.
Sinon, je n'ai jamais utilisé de transaction en php et donc je n'ai aucun exemple de commit ou roolback à te présenter.
Marsh Posté le 05-12-2002 à 12:00:54
merci pour ces precisions, je voyais a peu pres comment ca fonctionnait, par contre je ne savais pas que les donnees etaient d'abord stockees dans une table temporaire
j'attaque une base MS SQL mais via la couche ODBC de PHP
MS SQL gere les transactions, pas de doute la dessus
quelqu'un touche aux transactions sous PHP ?
Marsh Posté le 05-12-2002 à 12:24:25
Batman-Fr a écrit a écrit : merci pour ces precisions, je voyais a peu pres comment ca fonctionnait, par contre je ne savais pas que les donnees etaient d'abord stockees dans une table temporaire j'attaque une base MS SQL mais via la couche ODBC de PHP MS SQL gere les transactions, pas de doute la dessus quelqu'un touche aux transactions sous PHP ? |
J'ai dit de manière, théorique.
Je sais pas si en pratique, ils font comme ça, ou s'ils verouille les pages contennant les données en attendant le commit ou le rollback afin de mettre vraiment les données à jours.
De plus, la pluspart des gestionnaires de bases de données ont un journal des modifications a venir ou effectué et ca m'étonerait pas que certains d'entre eux, mélange le vérouillage des pages avec l'utilisation de ce journal afin de faire desuite les modifs (gain de temps au moment du commit au détriment du rollback) sans les rendre publique (vérouillage des données) tout en étant capable d'effacer, en cas de rollback, les modifs qui ont été faite.
Marsh Posté le 05-12-2002 à 14:04:35
Rien à battre que se soit du PHP par ODBC
Pour utiliser des Commit et Rollback sous MSSQL, tu utilise le T-SQL intégré.
Ecrit tes procèdures stockées avec tes transactions, et appelle les... depuis ce que tu veux.
Marsh Posté le 05-12-2002 à 14:18:12
ok, du coup on aborde quelque chose que ne connais pas du tout
tu connais peut etre un site qui explique un peu la chose ?
Marsh Posté le 05-12-2002 à 14:23:46
C'est trés simple :
Tu installe MSSQL si c'est pas déjà fait.
Tu auras dans l'aide toute la doc sur la syntaxe du T-SQL (Transac SQL 92, c'est le language intégré à MSSQL2000).
De plus, dans l'analyseur de requête (outil fourni avec MSSQL), tu as des sample de procédures stockées !
Le seul truc à vérifier, c'est la syntaxe d'appel des procédure stockées, avec passage de paramètres, depuis PHP... , j'espère que c'est possible
Marsh Posté le 05-12-2002 à 17:04:15
a nouveau, je vais regarder de ce cote (MSSQL est deja installe, l'analyseur de requete, je l'utilise pour des requetes simple, je vais approfondir )
Marsh Posté le 05-12-2002 à 11:41:05
j'ai quelques bases en SQL mais je n'ai jamais utilisé commit et rollback alors que ca a l'air d'etre essentiel.
J'effectue mes requetes avec le driver ODBC en PHP.
Malgré mes recherches, je n'ai trouvé aucun exemple de script utilisant commit et rollback.
Pouvez-vous me donner un exemple succint s'il vous plaît afin que je vois comment on utlise ca?
merci d'avance
---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391