![]() |
Datenbank: MySql • Version: 5.x • Zugriff über: MyDac
MyDac und Temporäre Tabellen
Hi,
ich habe ein problem mit Temporären Tabellen und MyDac. Bei "Geht nicht" bekomme ich die rückmeldung das es keine tmp Tabelle gibt. Das ist nur ein hingefummeltes beispiel, um zu verdeutlichen was ich meine. Geht:
Delphi-Quellcode:
Geht nicht:
Query.Sql.Add('CREATE TEMPORARY TABLE tmp (ID int NOT NULL AUTO_INCREMENT, PID Int, PRIMARY KEY (ID)) ENGINE=INNODB;INSERT INTO Test(T1,T2,Status) VALUES (1,1,False);INSERT INTO tmp(PID) VALUES (LAST_INSERT_ID());');
Query.Execute;
Delphi-Quellcode:
Mache ich das z.b. mit Navicat for MySQL, dann kann ich an die tmp Tabelle bis ich die Connection wirklich schließe.
Query.Sql.Add('CREATE TEMPORARY TABLE tmp (ID int NOT NULL AUTO_INCREMENT, PID Int, PRIMARY KEY (ID)) ENGINE=INNODB;');
Query.Execute; // Und dann in einer schleife folgendes. Query.Sql.Clear; Query.Sql.Add('INSERT INTO Test(T1,T2,Status) VALUES (1,1,False);INSERT INTO tmp(PID) VALUES (LAST_INSERT_ID());'); Query.Execute; Danke im voraus |
AW: MyDac und Temporäre Tabellen
In Deinem Beispie "Geht nicht" heißen die erzeugte Tabelle und die in die Du einfügen willst unterschiedlich.
|
AW: MyDac und Temporäre Tabellen
Nö, es sind 2 Tabellen in einem Statement, ich hab das auch erst nicht gesehen.
|
AW: MyDac und Temporäre Tabellen
Ne, also die Tabelle Test gibt es schon. Es geht im grunde nur um die Tabelle tmp, die "verschwindet". Laut MySql wird die aber erst gedropt wenn man die Connection schließt. Und das stimmt sogar ;)
|
AW: MyDac und Temporäre Tabellen
Klingt nach einem automatischen Disconnect zwischen den Aktionen.
Schau mal nach, wie dein ![]() |
AW: MyDac und Temporäre Tabellen
Ist False. Ist ja default. An den Default Werten habe ich nix geändert.
|
AW: MyDac und Temporäre Tabellen
Müsste man nicht in der zweiten Version immer SQL.Text statt SQL.Add nehmen? Das Statement wird ja sonst immer länger...
Oder ein SQl.Clear dazwischen bauen... |
AW: MyDac und Temporäre Tabellen
Jop, ein Clear ist dazwischen. Wie gesagt, oben das ist grade mal so hingefummelt. Aber ich änder das grade. Wäre aber Theoretisch nicht schlimm, wenn man das Execute nach der schleifen machen würde. Aber der Effekt bleibt. Die tmp Tabelle ist weg.
Danke. |
AW: MyDac und Temporäre Tabellen
Ich glaube mich zu erinnern, dass in der Execute-Methode die Verbindung zuerst getrennt wird...
|
AW: MyDac und Temporäre Tabellen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz