Firebird 2.5, global temporary tables

ny_unity

SQL-Guru
Beiträge
192
Hallo zusammen,

kennt jemand die Geschichte mit den global temporary tables (GTT) unter firebird?

Ich habe dazu ein paar Fragen:

-> haben die GTT Auswirkung auf die anderen Tabellen in der Datenbank?
-> werden die GTT gelöscht? Wenn ja, wann und wie?
-> kann man die GTT mittels eines SELECT von "festen" Tabellen füllen und später mit einem Select wieder abfragen?

Danke,

Erik
 
Werbung:
Aus der Doku (Google nach firebird global temp table, erster Treffer, Suchdauer im Skat):

The DECLARE GLOBAL TEMPORARY TABLE statement defines a temporary table for the current connection.

These tables do not reside in the system catalogs and are not persistent. Temporary tables exist only during the connection that declared them and cannot be referenced outside of that connection. When the connection closes, the rows of the table are deleted, and the in-memory description of the temporary table is dropped.


Beantwortet fast alle Fragen, außer die Letzte. Dazu meine Gegenfrage: warum sollte es nicht gehen? Bonusfrage: schon mal probiert?
 
Hey,

die Doku habe ich gefunden und verstanden, allerdings habe ich auf meiner Testdatenbank eine globale Tabelle erstellt. Habe disconnected und neu Connected, aber die Tabelle war immer noch sichtbar. Ich dachte die Tabelle wird wenn sie nicht mehr gebraucht wird gelöscht?

Probiert habe ich das mit dem Select natürlich :)

Ich habe erst die Tabelle erstellt und dann einen Wert eingefügt, erst mit Update, dann mit insert into, aber immer war die Tabelle mit nachträglichen Select leer, daher frage ich so "blöd" :)

Und die Frage, ob dadurch die lokalen festen Tabellen beeinträchtigt werden, wenn die Tabelle immer nach gebraucht verschwindet ist das ja kein Problem, aber wenn die immer da bleiben, macht vielleicht irgendwann der Softwarehersteller Probleme :-/

Grüße

Erik
 
Hey,

die Doku habe ich gefunden und verstanden, allerdings habe ich auf meiner Testdatenbank eine globale Tabelle erstellt. Habe disconnected und neu Connected, aber die Tabelle war immer noch sichtbar. Ich dachte die Tabelle wird wenn sie nicht mehr gebraucht wird gelöscht?

Dann scheint das entgegen der Doku nicht so wie da beschrieben zu funktionieren. Bitte mache einen Bugreport.

Probiert habe ich das mit dem Select natürlich :)

Ich habe erst die Tabelle erstellt und dann einen Wert eingefügt, erst mit Update, dann mit insert into, aber immer war die Tabelle mit nachträglichen Select leer, daher frage ich so "blöd" :)

Nun, wenn in einer Datenbank eine Tabelle Werte 'vergißt', dann scheint mir das ein Fehler -> Bugreport.

(außer MySQL, da gibt es extra Blackhole-Engine, die das vergessen perfekt kann ...)


Und die Frage, ob dadurch die lokalen festen Tabellen beeinträchtigt werden, wenn die Tabelle immer nach gebraucht verschwindet ist das ja kein Problem, aber wenn die immer da bleiben, macht vielleicht irgendwann der Softwarehersteller Probleme :-/

Grüße

Erik

Der Softwarehersteller?

PS.: exzessiver Gebrauch von temp. Tabellen etc. sollte man vermeiden, oft gibt es da bessere Alternativen.
 
Wegen der Doku... Ich las, dass bei permanent Verbindungen dazu kommen kann, dass die Tabelle bestehen bleibt. Ich hatte es aber so verstanden, das wenn der User, der die Tabelle erstellt hat, nicht mehr benutzt, wird zu gelöscht.:rolleyes:

Die Datenbank ist eine von unserem programm mit denen die Clienten arbeiten. Ich führe dort Auswertungen mittels Select aus, doch jetzt bin ich am Limit mit den 255 Verknüpfungen.

An welche anderen Wege denkst du da? Ich bräuchte nur eine temporäre Tabelle im Moment.
 
Oft kann man temp. Tabellen vermeiden, indem man das SQL geschickter erstellt. Was viel Wert ist: Common Table Expressions, das sind die Ausdrück, die mit WITH ... beginnen. Kann aber nicht jede DB.
 
Damit arbeite ich bereits ;-)
Ich hatte meine Hoffnung nun in die GTT gesteckt... Scheint aber iwie nicht zu wollen. Das Statement ist schön sauber aufgebaut. Und nochmals überarbeiten :-( nee, erstmal weiter schauen. Hatte auch überlegt im MS Prozeduren anzulegen, aber dort hat man ja nur 8.000 Zeichen bei Linked Server im OPENQUERY und was die Performance betrifft Male ich mir lieber nicht aus ...

Eventuell ist es eine Datenbankeinstellung, die verhindert das die temporären Tabellen wieder gelöscht werden ... :-/
 
Werbung:
ok, GTT läuft.... Allerdings kann ich diese noch nicht in meinem Webprogramm einbauen, dieser kennt die Funktionen anscheinen nicht :-(
 
Zurück
Oben