Sequenzen

Hallo,

ich möchte den nexen Wert einer Sequenz abfragen. Leider weiß ich nicht wie die Sequenz heiß. Was ich weiß ist der Tabellenname und das auf jeder Tabelle maximal eine Sequenz liegt. Wenn ich jetzt die Möglichkeit hätte mit einer Abfrage herauszufinden welche Sequenzen es gibt könnte ich mir die Richtige heraussuchen. Kann mir jeman helfen diese Information zu finden?

Vielen Dank

Gruß
DTR

Hallo,

schon mal die Doku gelesen?


Kapitel 8.1.4. Serial Types
Kapitel 9.12. Sequence Manipulation Functions



mfg

fristo

Jain, wenn der DB Admin die Sequencen von Hand erstellt hat, bekommst du das nicht so einfach heraus. Da können die Sequencen beliebige Namen haben. Erstellt PG die Sequence bei einem Serial Type, heissen die Tabelle Unterstrich Spalte Unterstrich ‘seq’ oder so. Einfach mal beim erstellen einer Tabelle mit Sequence auf die Notice achten, die auf die Console geschrieben wird.

Danke ads,
die Sequenzen sind automatisch erstellt, und tragen diese Nomenklatur. Genau darüber wollte ich auch auf die Sequenz zugreifen. Die Sache liegt nun so, das ich erst zur laufzeit meines Programmes weiß welche Tabelle ich abfragen will. Ich möchte aber nicht fest in den Code schreiben welche Tabelle in welcher Spalte die Sequenz hat. Meine Hoffnug war nun, das es eine Möglichkeit gibt die Datenbank zu fragen welche Sequenzen gibt es alle und daraus dann die herauszusuchen, die den gesuchten Tabellennamen im Namen hat.

Hallo,

Die von Dir benötigten Information stehen in den Systemtabellen der Datenbank!


mfg

fristo

fristo: du bist immer so kurz angebunden mit einem RTFM :wink:

Die ganzen Informationen sollten auch in einer etwas kompatibleren Form (vor allem für zukünftige Erweiterungen) in dem information_schema auftauchen.

Hallo,

das habe ich mir auch schon gedacht, ich brauche nur den Namen der Systemtabelle. Den konnte ich bisher in keiner Doku gefunden

Gruß
DTR

Hallo DTR,

die deutsche Doku ist bezüglich der Systemtabellen nicht mehr aktuell. Ich beziehe mich hier auf die aktuelle englische Doku. In Kapitel 42 sind hier die Systemtabellen beschrieben.

Am sinnvollsten ist es aber, wenn Du dir z.B. PGAdmin installierst und dir die Systemtabellen selbst anschaust (Menü Anzeige ==> Systemobjekte). Im Schema pg_catalog wirst Du einige Sichten (View’s) finden, die auch den Namen “Sequence” enthalten. Ob die für Deine Zwecke geeignet sind, muss Du selbst entscheiden. Eventuell muss Du dir deinen speziellen SELECT selbst zusammenstellen. Die vorhanden SELECT’s dürften dann aber eine gute Vorlage sein.

Was mich aber jetzt mal interessiert, warum und wofür brauchst Du den nächsten Wert eine Sequence zur Laufzeit? Gibt es da keine einfachere Lösung?



mfg

fristo

Vielen Dank, das war genau die Information die ich gebraucht habe.

Ich brauche diese Information, da ich sie in einem Anderen Objekt zur laufzeit noch als verweis vorhalten möchte. Da ich dieses Vorgehen in verschiedenen Klassen habe, die in verschiedene Tabellen speichern habe ich mir eine Zentrale Methode geschrieben, die das Speichern übernimmt, und den automatisch erzeugten Wert zurückliefert.

Gruß
DTR