Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
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 06/07/2004, 14h33   #1
Membre du Club
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 66
Points : 66
Par défaut [BCB5][IBX5.4]FOREIGN KEY ??!!

Bonjour,

Je me retrouve avec le message d'erreur suivant "unsuccessful metadata updata object TEST_M is in use".
Voici les differentes operations que j'effectue:

Creation de ma table Maitre d'une clé primaire, et d'un champ unique.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
IBSQL->SQL->Clear();
IBSQL->SQL->ADD("CREATE TABLE TEST_M");
IBSQL->SQL->ADD(" (NOM_M VARCHAR(50) NOT NULL,");
IBSQL->SQL->ADD(" CODE_TEST_M INTEGER NOT NULL,");
IBSQL->SQL->ADD(" VALEUR_M INTEGER)");
IBSQL->ExecQuery();
IBSQL->Transaction->CommitRetaining
 
IBSQL->SQL->Clear();
IBSQL->SQL->ADD("ALTER TABLE TEST_M ADD");
IBSQL->SQL->ADD(" CONSTRAINT PK_TEST_M");
IBSQL->SQL->ADD(" PRIMARY KEY (NOM_M)");
IBSQL->ExecQuery();
IBSQL->Transaction->CommitRetaining();
 
IBSQL->SQL->Clear();
IBSQL->SQL->ADD("ALTER TABLE TEST_M");
IBSQL->SQL->ADD(" ADD CONSTRAINT U_TEST_M");
IBSQL->SQL->ADD(" UNIQUE (CODE_TEST_M)");
IBSQL->ExecQuery();
IBSQL->Transaction->CommitRetaining();
IBSQL->Close();

Creation de ma table esclave d'une clé primaire, et d'un champ unique.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
IBSQL->SQL->Clear();
IBSQL->SQL->ADD("CREATE TABLE TEST_E (");
IBSQL->SQL->ADD("CODE_TEST_M INTEGER NOT NULL, ");
IBSQL->SQL->ADD("NOM_E VARCHAR(50) NOT NULL, ");
IBSQL->SQL->ADD("CODE_TEST_E INTEGER NOT NULL, ");
IBSQL->SQL->ADD("VALEUR_E INTEGER)");
IBSQL->ExecQuery();
IBSQL->Transaction->CommitRetaining();
 
IBSQL->SQL->Clear();
IBSQL->SQL->ADD("ALTER TABLE TEST_E");
IBSQL->SQL->ADD(" ADD CONSTRAINT PK_TEST_E");
IBSQL->SQL->ADD(" PRIMARY KEY (CODE_TEST_M, NOM_E)");
IBSQL->ExecQuery();
IBSQL->Transaction->CommitRetaining();
 
IBSQL->SQL->Clear();
IBSQL->SQL->ADD("ALTER TABLE TEST_E");
IBSQL->SQL->ADD(" ADD CONSTRAINT U_TEST_E");
IBSQL->SQL->ADD(" UNIQUE (CODE_TEST_E)");
IBSQL->ExecQuery();
IBSQL->Transaction->CommitRetaining();
et maintenat au moment de créer ma FOREIGN KEY...
Code :
1
2
3
4
5
6
7
IBSQL->SQL->Clear();
IBSQL->SQL->ADD("ALTER TABLE TEST_E");
IBSQL->SQL->ADD(" ADD CONSTRAINT FK_TEST_E");
IBSQL->SQL->ADD(" FOREIGN KEY (CODE_TEST_M)");
IBSQL->SQL->ADD(" REFERENCES TEST_M (CODE_TEST_M)");
IBSQL->ExecQuery();
IBSQL->Transaction->CommitRetaining();
Je me retrouve avec l'erreur de ci dessus. Je n'y comprend rien.
Avez vous une idée ???

Merci d'avance.
Sitting Bull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2004, 14h44   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Oui celà peux arriver avec IB6, et ca parrait alléatoir car celà marche en général...

Il me semble que c'est un BUGG et qu'il a été corrigé dans Firebird1.5

Celà eux également le faire en executant un script, votre code parait correcte.

Vous avez essayé d'inverser les créations ?

Par exemple d'abord la table bien entendu

puis Cle uniques
puis Primary
puis foreign key ?

Et de faire un commit à la place d'un commitRetaining ? (Normalement ca doit rien changer mais bon.. vu qu'il n est pas contant parqu'il y a une personne qui semble utiliser la table en fermant la transaction, il n'y a plus personne ni en lecture ni en ecriture.......)
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2004, 15h14   #3
Membre du Club
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 66
Points : 66
Apres réinstallation de notre serveur, et redemarrer le poste client cela fonctionne correctement, a ne rien ni comprendre ???

J'espere que cela n'arrivera pas trop souvent chez nos clients ??!!

Merci et bonne journée.
Sitting Bull 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 11h53.


 
 
 
 
Partenaires

Hébergement Web