Une commande sql "rollback" en asp ?

Une commande sql "rollback" en asp ? - ASP - Programmation

Marsh Posté le 16-01-2004 à 16:46:12    

Avec une requète sql en asp, est-ce possible de faire un rollback pour par exemple annuler une commande DELETE ?
 
Et si c'est possible, comment faire ?
 
J'ai déjà essayer de mettre une commande "rollback" juste après la commande "DELETE" sans fermer la connection mais ça ne marche pas....  :(

Reply

Marsh Posté le 16-01-2004 à 16:46:12   

Reply

Marsh Posté le 16-01-2004 à 18:49:58    

Faire une recherche sur les transactions en SQL ou ASP.


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
Reply

Marsh Posté le 16-01-2004 à 19:27:57    

davjack a écrit :

Avec une requète sql en asp, est-ce possible de faire un rollback pour par exemple annuler une commande DELETE ?
 
Et si c'est possible, comment faire ?
 
J'ai déjà essayer de mettre une commande "rollback" juste après la commande "DELETE" sans fermer la connection mais ça ne marche pas....  :(  

ta base doit être en mode commit par statement, je sais plus comment on change ça.
 
mais commence ta séquence par "begin" ça devrait ouvrir une transaction (donc tu auras savepoint et rollback de dispo). par contre n'oublie pas que si tu oublies le "commit" à la fin, tu perds tout.


Message édité par nraynaud le 16-01-2004 à 19:28:19

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 16-01-2004 à 23:12:09    

tu commences par Begin not Atomic et tu valides par Commit (c'est le mode transactionné)

Reply

Marsh Posté le 16-01-2004 à 23:13:18    

http://www.devguru.com/Technologie [...] intro.html
 
Regarde du côté des méthodes de l'objet "connection"


Message édité par MagicBuzz le 16-01-2004 à 23:14:30
Reply

Marsh Posté le 16-01-2004 à 23:15:58    

PS: et c'est un peu plus propre que des begin et des commit de goret, parceque y'a pas deux SGBD qui utilisent la même syntaxe, alors niveau portabilité c'est 0.


Message édité par MagicBuzz le 16-01-2004 à 23:16:14
Reply

Marsh Posté le 16-01-2004 à 23:18:59    

Par exemple, avec Oracle, pour valider des bouts de transaction tout en pouvant les rollbacker quand même, c'est SAVEPOINT la syntaxe. Avec SQL Server, c'est moins proc, il support les transactions imbriquées. Avec ADO et ses méthodes, tu gères transactions imbriquées sans te soucier du joyeux bordel qui est derrière.

Reply

Marsh Posté le 16-01-2004 à 23:22:18    

Oracle aussi supporte les transactions imbriquées. C'est d'ailleur dans la norme.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 16-01-2004 à 23:23:17    

sauf que c'est avec l'instruction savepoint (et globalement, ça marche pas pareil)
 
tu peux pas avoir plusieurs begin trans à la queue leue-leue (ou alors c'est nouveau, sur la 8.0.5 je peux te certifier que c'est impossible)


Message édité par MagicBuzz le 16-01-2004 à 23:23:38
Reply

Marsh Posté le 16-01-2004 à 23:25:39    

A ma connaissance, ce code marche pas sous Oracle :
 


BEGIN TRAN T1
UPDATE table1 ...
BEGIN TRAN M2 WITH MARK
UPDATE table2 ...
SELECT * from table1
COMMIT TRAN M2
UPDATE table3 ...
COMMIT TRAN T1


 
(tiré de la doc SQL Server 2000)

Reply

Marsh Posté le 16-01-2004 à 23:25:39   

Reply

Marsh Posté le 16-01-2004 à 23:28:03    

Pis y gère ça Oracle ? (jamais testé)
 


USE pubs
GO
BEGIN DISTRIBUTED TRANSACTION
UPDATE authors
   SET au_lname = 'McDonald' WHERE au_id = '409-56-7008'
EXECUTE remote.pubs.dbo.changeauth_lname '409-56-7008','McDonald'
COMMIT TRAN
GO


 
(une transaction dont le scope s'applique à plusieurs bases)

Reply

Marsh Posté le 16-01-2004 à 23:28:21    

http://asia.cnet.com/itmanager/tec [...] 1-2,00.htm
je connais pas la version.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 16-01-2004 à 23:33:23    

ha ouais ! t'ain y sont relous, y peuvent pas se décider à garder chacuns leurs spécificités ? :o
 
sinon, oracle gère les transactions nommées ? c'est pratique pour commiter (ou rollbacker) plusieurs niveau d'imbrication d'un coup.
 
style :
 
begin tran globale
 
traîtement 1
 
begin tran mini
 
traîtement 2
 
commit mini
 
begin tran toto1
 
traîtement 3
 
begin tran toto2
 
traîtement 4
 
if je suis pas heureux
   rollback globale
end if
 
commit toto2
commit toto1
commit globale
 
ca peut être utile dans des fonctions récursives notamment, s'il se produit une erreur grave au niveau N et qu'on ne peut pas propager l'erreurs aux niveaux inférieurs. on rollback tout, et on arrête tout, zou :D

Reply

Marsh Posté le 16-01-2004 à 23:48:59    

MagicBuzz a écrit :

ha ouais ! t'ain y sont relous, y peuvent pas se décider à garder chacuns leurs spécificités ? :o
 
sinon, oracle gère les transactions nommées ? c'est pratique pour commiter (ou rollbacker) plusieurs niveau d'imbrication d'un coup.

http://www.cse.unsw.edu.au/~maliba [...] mands.html
 
'faudrait que tu laches un peu SQL Server et que tu passe à google aussi.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 17-01-2004 à 00:24:36    

:heink: je vois pas trop le sens de ton poste.
 
1) prends oracle 8.0.5, il ne supporte pas ces trucs.
2) je pose une question. t'as l'air de savoir, alors autant te la poser à toi plutôt qu'à google, sinon je vois pas trop à quoi sert un forum


Message édité par MagicBuzz le 17-01-2004 à 00:24:58
Reply

Marsh Posté le 17-01-2004 à 00:31:00    

j'en sais rien, moi les BDD ça me casse les couilles, mais comme je sors de 3 ans de cours dessus, je connais un peu et je suis capable de pas me laisser embobiner par des comparaisons douteuses entre savepoint et begin.  
 
Maintenant sortir des informations précises, ça se fait avec google, à moins d'être une encyclopédie vivante, ce que je ne suis pas.
 
Si je suis venu c'est parce que je surveille les topics qui ont peu de réponses (qui bien souvent se règlent à coup de google, d'où ma citation).


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 17-01-2004 à 11:12:32    

de toute façon, dans tous les cas, c'est pas avec les instructions begin et rollback qu'on peut faire proprement des trasactions en ASP, mais en passant par les méthodes d'ADO, donc savepoint, transaction nommées, et autres joyeusetés, on s'en fout un petit peu à la limite :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed