[TYPO3-german] Autoincrement und PostgreSQL/DBAL
marcel.gsteiger at milprog.ch
marcel.gsteiger at milprog.ch
Mon Mar 5 00:16:49 CET 2007
Christian Welzel schrieb:
> > Also Anfangswerte setzen!
>
...das war das erste, das ich probiert hatte: die Spalte UID als Typ
SERIAL deklariert, das erzeugt eine Sequenz mit passendem Namen, der man
dann den "nächsten zu holenden Wert" setzen kann (der Anfangswert sollte
bleiben wie er ist, sonst werden die Daten unplausibel).
Leider klappt das trotzdem nicht. Typo3 versucht immer noch, den
falschen Wert einzufügen (weiss der Kuckuck wo der herkommt). Wenn ich
einen Insert-Trigger schreibe, welcher statt des falschen Defaultwerts
dann den richtigen Sequenzwert einfügt, macht DBAL keinen Fehler mehr
(ich hab den Debugger eingeschaltet) und der Datensatz wird eingefügt,
aber Typo3 bekommt dann gar nicht mit, welche neue uid dann dieser Zeile
zugewiesen wurde und "verliert" den Datensatz im Backend. Hätte mich
auch gewundert, wenn das funktionieren würde.
Aha, dachte ich mir, vielleicht frägt ja Typo3/DBAL/Adodb die letzte
eingefügte OID ab, um an den eingefügten Datensatz zu kommen, und ich
habe ja mit meinem PostgreSQL 8.1 defaultmässig keine OIDs mehr in den
Tabellen. Ab 8.1 sollte man zwar statt lastoid lastval benutzen, aber
dennoch habe ich die Tabelle mit OIDs nochmals neu aufgebaut, in der
Hoffnung, es klappe dann. Aber auch das half nichts. Ob das Problem
überhaupt bei Adodb oder dann gleich von Anfang an bei Typo3/DBAL liegt,
weiss ich nicht.
Eigentlich wäre es einfach: ein "SELECT lastval()" liefert den letzten
mittels nextval('sequenzname') in dieser Session generierten Wert, aber
das müsste der Ado PostgreSQL Treiber doch wohl wissen? Leider gibt es
lastval() erst seit PostgreSQL 8.1 .
Also suche ich immer noch nach einer Lösung...
More information about the TYPO3-german
mailing list