Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2006, 20h10   #1
Membre régulier
 
Inscription : avril 2003
Messages : 141
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 141
Points : 89
Points : 89
Par défaut Select For Update Nowait

Bonjour,

J'ai un petit problème j'ai 2 sessions différentes et je fais

Session 1:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
#BEGIN
# select * from i where i=1 for update nowait;
i
---
1
(1 row)
 
# select * from i where i=2 for update nowait;
i
---
2
(1 row)
Session 2 :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
#BEGIN
# select * from i where i=3 for update nowait;
i
---
3
 
-- J'arrive bien à bloquer un enregistrement
 
# select * from i where i=1 for update nowait;
ERROR:  could NOT obtain LOCK ON row IN relation "i"
-- Jusque là normal j'essai de bloquer un enregistrement déja bloqué
 
# select * from i where i=4 for update nowait;
ERROR:  current transaction IS aborted, commands ignored until end of transaction block
Et voici le problème, une fois que j'ai eut un " ERROR: could not obtain lock on row in relation "i" " je ne peux plus rien faire a moins de faire un Commit ou un Rollback, mais je ne veux pas perdre le(s) bloquage(s) que j'ai pratiquer avant (ici bloquage de l'enregistrement i=3)

Si quelqu'un a une solution a ce problème cela m'aiderait beaucoup.
Merci d'avance
e1lauren est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 22h04   #2
Membre régulier
 
Inscription : avril 2003
Messages : 141
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 141
Points : 89
Points : 89
Bon voila j'ai réussi à elucider (pratiquement ) tout seul ce problème. Après quelques heures à se prendre la tête, j'avais oublié qu'il existait quelque chose de magique : le Savepoint
Donc voila c'est résolu en créant un savepoint avant chaque "Select for update" et si l'enregistrement est bloqué je reviens juste avant ...
e1lauren est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h34.


 
 
 
 
Partenaires

Hébergement Web