PDO lastInsertId(), DB übergreifend
hawkmaster
- datenbank
Hallo zusammen,
Ich weiss viele von euch sagen "Eine DB übergreifende Anwendung ist Illusion".
Ich versuche es trotzdem mal. Vermutlich wird später aber nur eine DB (verm. Postgres) supported.
meine PHP Anwendung verwendet PDO für die Datenbankanbindung.
MySQL und MS SQL funktioniert schon recht gut. Bei Postgres habe ich nun jedoch ein Problem.
Um die letzte ID einer Autoincrement Spalte von einem INSERT zu bekommen, verwende ich;
$dbh->lastInsertId();
Bei Postgres geht das so aber nicht. Hier muss man den Sequenz Namen angeben wie,
$dbh->lastInsertId('mytable_textid_seq');
Ich überlege gerade, ob man hier event. ganz anders vorgehen könnte und eine eigene kleine Funktion machen, die die jeweilige DB unterstützt.
Also bei MySQL z.b.
SELECT LAST_INSERT_ID();
in Postgres event.
SELECT lastval();
oder einfach den Return Value
Insert ...
$result = $statement->fetch(PDO::FETCH_ASSOC);
return $result["employee_id"];
in MS SQL
SELECT SCOPE_IDENTITY()
oder mit;
SELECT @@IDENTITY AS mixLastId
Habt ihr noch eine Idee bzw. wie würdet ihr dies machen?
Oder ist die PDO Funtion lastInsertId() zuverlässiger?
vielen Dank und viele Grüße
hawk