[Postgresql] Transaction : équivalent à @@error en sql server ?

Transaction : équivalent à @@error en sql server ? [Postgresql] - SQL/NoSQL - Programmation

Marsh Posté le 04-12-2003 à 20:40:18    

hello tout le monde,
 
J'ai un petit soucis de compréhension. Je veux faire une transaction, et je ne sais pas à priori si elle s'est bien passé ou pas. Un ami m'a montré qu'en SQL Server, on pouvait regarder l'état de @@error afin de déterminer si on fait un COMMIT ou un ROLLBACK, mais là, en postgresql, je vois pas comment faire dans ce cas.
 
 
Sinon, autre chose, pour pas ouvrir un autre topic.
 
Je recherche à faire, dans l'idéal ca :
 


create index Ix_RechercheVol on Vols(DateVol desc, IdVilleDepart, IdVilleArrivee) ;


 
Mais ca ne passe pas à cause du desc, une idée ?
 
Merci à vous !
 
@+


Message édité par Evadream -jbd- le 05-12-2003 à 00:15:10
Reply

Marsh Posté le 04-12-2003 à 20:40:18   

Reply

Marsh Posté le 05-12-2003 à 00:24:21    

J'ai peut-être pas bien saisi quelque chose, dites le moi. Dans le cas deu type de transaction qui m'intéresse ici, la "défaillance" qui justifierait un rollback ne viendrait pas de moi (défaut mémoire ou autre possibilités), et le rollback serait fait par le serveur. Yabon ?
 
Hésitez pas à être précis, j'ai commencé ce matin [:ddr555]

Reply

Marsh Posté le 05-12-2003 à 00:34:10    

En fait, c'est possible, mais c'est loin d'être simple.
 
http://www.postgres.com/docs/curre [...] index.html
 
Dans la syntaxe de create index, on vois qu'il est possible de désigner une classe d'opérateurs à utiliser.
 
http://www.postgres.com/docs/curre [...] class.html
 
Chaque type de donnée à une classe par défaut, mais il est possible d'en créer.
 
Pour ton cas, il faut créer la classe d'opérateurs pour le type de données qui inverse la signification de <, <=, >= et > !
 
Comment on fait çà ?
J'en sais rien ! Regarde la doc...
http://www.postgres.com/docs/curre [...] index.html
 
Bon courage :D
 
Exemple de création d'une classe d'opérateurs :
 
CREATE OPERATOR CLASS int4desc_ops
     FOR TYPE int4 USING btree AS
         OPERATOR        1       > ,
         OPERATOR        2       >= ,
         OPERATOR        3       = ,
         OPERATOR        4       <= ,
         OPERATOR        5       < ,
         FUNCTION        1       int4larger(int4, int4);
 
J'ai inversé les opérateurs !
Je ne suis pas du tout certain que çà marche :D
Ensuite pour l'index çà devient :  
create index Ix_special on sometable(a int4desc_ops, b) ;
 
Bon, mais là çà devient de la haute volige quand même, surtout à s't'heure !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-12-2003 à 00:40:22    

Merci !
J'avais vu ca aussi dans la doc, mais ca m'a fait un peu peur, et comme tu le soulignes très justement, à cette heure, je vais me lancer la dedans :D
 
Encore Merci ! @++

Reply

Sujets relatifs:

Leave a Replay

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