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 23/08/2006, 19h47   #1
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 62
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 62
Points : 30
Points : 30
Par défaut drop avant create table ?

Hello,
En MySQL, on peut faire un DROP TABLE juste avant un CREATE TABLE pour s'assurer que la table que l'on va creer n'existe pas.
Comment peux-t-on faire ca en FireBird ? En effet, j'obtiens un message d'erreur indiquant que j'essai de supprimer une table qui n'existe pas.. (Be oui je sais )

Merci,
Matthias
]matmat[ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 00h02   #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
Code :
SELECT * FROM Rdb$relations WHERE Rdb$relation_name='MATABLE'
sinon si tu veux forcer la creation, tu fais un RECREATE
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2006, 19h32   #3
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 62
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 62
Points : 30
Points : 30
ok, merci, pour les tables un RECREATE marche.. presque parfaitement.
Je suis maintenant confronter a plusieurs autres problemes.
Je travaille sur une base de donnees firebird 1.5 avec SQL Manager 2005.

- Comment faire pour droper la base de donnees alors que j'y suis connecter? Si ca n'est pas possible, comment faire pour droper la base de donnees sans y etre connecte ?

- Lorsque je fais recreate sur ma table, les indexs semblent etre supprimer en meme temps. Sauf que quand je relance une 2e fois mon script, j'obtiens le message d'erreur suivant :
This operation is not defined for system tables.Unsuccessful metadata update.
Object INDEX is in use .
Pour executer mon script a nouveau avec succes, je dois me deconnecter de la base et m'y reconnecter.

- Autres question, pour les generateurs, comment est-ce que je peux faire pour avoir un IF EXIST
]matmat[ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2006, 20h13   #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
Citation:
Envoyé par ]matmat[
- Comment faire pour droper la base de donnees alors que j'y suis connecter? Si ca n'est pas possible, comment faire pour droper la base de donnees sans y etre connecte ?
tu supprimes le fichier

Citation:
Envoyé par ]matmat[
- Lorsque je fais recreate sur ma table, les indexs semblent etre supprimer en meme temps. Sauf que quand je relance une 2e fois mon script, j'obtiens le message d'erreur suivant :
This operation is not defined for system tables.Unsuccessful metadata update.
Object INDEX is in use .
Pour executer mon script a nouveau avec succes, je dois me deconnecter de la base et m'y reconnecter.
ça c'est parceque tu utilise un outil graphique mal conçu
pour certaines opérations, il faut un accès exclusif à la base et ton outil graphique doit avoir une connexion active à ta base avec une autre transaction ouverte en plus de celle où tu lance le script
Passe par isql et tout ira bien


Citation:
Envoyé par ]matmat[
- Autres question, pour les generateurs, comment est-ce que je peux faire pour avoir un IF EXIST
va voir la FAQ et les tutoriels
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2006, 20h52   #5
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 62
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 62
Points : 30
Points : 30
Oki, merci Philippe encore une fois.

La conclusion que j'en tire est qu'il est impossible d'avoir un script SQL qui puisse RAZ completement la base de donnees de A a Z comme en MySQL. Le seul moyen est donc de supprimer le fichier de la base de donnees et de relancer le script de creation du schema de la base.
]matmat[ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2006, 21h27   #6
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
oui et non
le drop database existe, mais il faut être connecté à la base pour l'executer
c'est un peu idiot, c'est pour cela que je ne le conseille pas.
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski 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 21h48.


 
 
 
 
Partenaires

Hébergement Web