Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 31/05/2007, 09h48   #1
Membre du Club
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : avril 2004
Messages : 179
Points : 58
Points : 58
Par défaut Suppression d'une vue impossible

bonjour,

depuis que je suis passé de firebird 1.5 à la version 2.0.1, j'ai un soucis concernant la suppression des vues.
dans mon programme, je crée à certains moments des vues dynamiquement (par programmation, donc).
une fois le résultat de la vue exploité, je supprime la vue temporaire.
avec la version 1.5 de firebird, tout fonctionne.
avec la dernière version, impossible de supprimer la vue si je l'ai exploitée (c.a.d. ouverture et fermeture au moins une fois).
dans ce cas, j'obtiens un message d'erreur disant que l'objet est en cours d'utilisation !!! (alors que je suis sur que tout est fermé, y compris la transaction encadrant la lecture des données).

une idée du problème ?

merci de votre aide
engi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 16h57   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
le problème est simple, tu as une transaction utilisant la vue qui n'est pas fermée
à toi de trouver laquelle
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h00   #3
Membre du Club
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : avril 2004
Messages : 179
Points : 58
Points : 58
pas si sûr !

voici le script (pas très optimisé mais parlant pour le test) :
  1. je démarre une transaction
  2. je crée la vue
  3. je valide la transaction
  4. je démarre une nouvelle transaction
  5. j'exécute une requête (un simple SELECT *) basée sur la vue précédemment créée
  6. je valide la transaction
  7. je démarre une troisième transaction
  8. je détruis la vue
  9. je valide la transaction -> ERREUR : la vue ne peut être supprimée car utilisée !!!
engi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h20   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
et bien je t'assures que si
quelque part dans ton appli où une de tes applis, la vue est active d'une manière ou d'une autre

la preuve :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DATABASE:  /home/firebird/db/testcollate.fdb, User: SYSDBA
SQL> SET autoddl off;
SQL> SHOW TABLE;
       TESTCOLLATE                            TEST_UQ
 
SQL> SHOW VIEW;
There are no views IN this DATABASE
SQL> SHOW TABLE testcollate;
NOM_FR                          VARCHAR(30) Nullable
SQL> CREATE VIEW v1 AS SELECT nom_fr FROM testcollate;
SQL> commit;
SQL> SELECT first 1 nom_fr FROM v1;
 
NOM_FR
==============================
aei
 
SQL> commit;
SQL> SHOW VIEW;
       V1
SQL> DROP VIEW v1;
SQL> commit;
SQL> SHOW VIEW;
There are no views IN this DATABASE
SQL>
Ceci dit, je ne suis pas persuadé du bien fondé de création destruction de vue dans une appli, mais c'est un autre débat
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h48   #5
Membre du Club
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : avril 2004
Messages : 179
Points : 58
Points : 58
Autant pour moi.
Merci pour cette réponse pertinente !!!
Comme je me prends la tête avec ça depuis un moment, je vais peut être trouver une autre solution, voire même eviter la création dynamique de la vue.
Merci de ton aide.
engi 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 11h08.


 
 
 
 
Partenaires

Hébergement Web