ALTER TABLE : ERROR Unsuccessfull metadata update...
Bonjour voila je cree une apllication avec delphi 5 et firebird 1.5.
Le but de mon apppli (pour linstant) c est de prendre une base dbase et la mettre sous firebird.
Juske la tout va bien , je fais tout ce ki faut avec les bde , je choisis les tables dbase, je cree dynamiquement la structure de la base firebird et je copie mes enregistrement.Le probleme c est que des enregistrements de la base dbase contienne des erreurs dans des champs cle etrangeres donc je suis oblige de faire :
- creation de la base firebird
- copie des donnes
- correction des donnees ( valeur de donne cle etrangere referencant une cle primaire pour laquelle cettte valeur n'existe pas!!!! ) et donc seulement apre modifier la structure de la base firebird en fasaint :
- ALTER mes tables pour rajouter mes cle etrangere SEULEMENT LA CA COINCE !!!
voila mon code ou je fais ALTER ET où CA COINCE (au premier COMMIT):
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 26 27 28 29 30 31 32 33 34 35 36 37
|
procedure cle_etr();
var IBQuery: TIBQuery;
begin
IBQuery := TIBQuery.Create(nil);
IBQuery.SQL.Clear();
IBQuery.Database:= form5.IBDatabase;
IBQuery.Transaction := form5.IBTransaction;
//CREATION CONTRAINTE CLE ETRANGERE UNION HOMME
IBQuery.SQL.Add('ALTER TABLE "FBUNIMODIF" ADD CONSTRAINT '+
'"CLE_ETRAN_HOM" FOREIGN KEY (HOMME) REFERENCES FBIDIMODIF("IDI");');
IBQuery.ExecSQL;
-->ca COINCE--> form5.IBTransaction.Commit;
IBQuery.SQL.Clear;
form5.IBTransaction.Active:=True;
//CREATION CONTRAINTE CLE ETRANGERE UNION FEMME
IBQuery.SQL.Add('ALTER TABLE "FBUNIMODIF" ADD CONSTRAINT'+
'"CLE_ETRAN_FEM" FOREIGN KEY (FEMME) REFERENCES FBIDIMODIF("IDI");');
IBQuery.ExecSQL;
form5.IBTransaction.Commit;
IBQuery.SQL.Clear;
end; |
donc l erreur me dit edbengine error , unsuccessfulle metadata update , FBIDIMODIF is in use,
moi ce que je compren c'est que les table que je veu modifier sont ouvertes , mais heureusement sinon je peux pa les modifier??
NON??
alors si quelqu un sait quelque chose ... ce qui va pas dans mon code ou si c est autre chose merci de me repondre...