Bonjour,
j'ai un problème de verrou,
Lorsque je vais
postgres me retourne comme erreur :Code:
1
2
3
4
5
6 BEGIN; LOCK ma_vue; ... ... COMMIT;
Dans ce cas comment poser un verrou sur une vue ?Code:ma_vue is not a table.
Version imprimable
Bonjour,
j'ai un problème de verrou,
Lorsque je vais
postgres me retourne comme erreur :Code:
1
2
3
4
5
6 BEGIN; LOCK ma_vue; ... ... COMMIT;
Dans ce cas comment poser un verrou sur une vue ?Code:ma_vue is not a table.
Une vue n'est pas une table, si vous essayez de nous expliquer ce que vous voulez faire on pourra peut être vous aider.
Ce que je voulais faire :
Avant une mise à jour de mes scripts, j'avais uniquement des tables dans ma base de données (avec des LOCK TABLE un peu partout dans mes scripts).
Ensuite j'ai rajouté une couche multi utilisateurs en utilisant les vues. j'ai procédé ainsi:
- déplacement des tables du schema public vers un nouveau schema nommé concept
- création des vues sur les tables d'origines dans les schemas utilisateurs (avec les même nom pour que les scripts tournent toujours)
- création de régle et attributions de droits sur les vues.
Du coup ayant unique des vues, les LOCK TABLE dans mes scripts déclenchaient une erreur. Normale puisqu'il n'y avait plus de table !
D'où ma question sur les verrous de vues...
Mais je n'ai toujours pas trouver de solution à ce probléme.
Par contre, pour certain script, au lieu de verrouiller toute la table, il était possible de verrouiller uniquement les lignes avec des SELECT ... FOR UPDATE.
Mais si vous savez comme verrouiller les tables que les vues utilisent, je suis preneur.
Pourquoi verrouillez-vous vos tables ? PostgreSQL sait verrouiller ce dont il a besoin quand il en a besoin. Vous risquez de placer des verrous trop importants et de bloquer vos utilisateurs.