Hallo zusammen,
In meiner PHP Webanwendung verbinde ich momentan mit PDO zu einem MySQL 5 Server. Ich versuche gerade die Anwendung bzw. die Datenbank zu MS SQL bzw. SQL Server 2008 Express zu portieren.
Einige Hürden sind bereits geschafft.
Die Verbindung zum SQL Server findet mit PDO und ODBC statt.
Jetzt stellt sich die Frage was tun bezüglich "LastInsertID()".
In einigen Stellen meiner Scripte habe ich z.b. folgenden Code:
$sql = "INSERT INTO groups (SystemsID,ElementsID,TabsID) VALUES ('{systems_id}','88','19')";
$DBO->exec($sql);
$lastid = $DBO->lastInsertId();
$sqlcat = "INSERT INTO values (GroupID,Value,TextID,SystemsID) VALUES ('$lastid','not','1079','$systems_id')";
$DBO->exec($sqlcat);
Beim ersten Insert wird der Primary (auto_increment) Key "GroupID" erzeugt und diese ID wird in der zweiten Tabelle gespeichert.
Die Frage ist nun; was ist die beste Lösung für MSSQL? Hier gibt es ja keine LastInsertID() Funktion.
Wäre ein Select nach dem Insert wie folgt eine Lösung?
SELECT id FROM tbl_newsletter ORDER BY id DESC LIMIT 1
Oder ein Select mit max() ?
SELECT max(id) FROM table;
In vielen Forenbeiträgen habe ich gelesen man soll "@@IDENTITY" verwenden oder besser noch SCOPE_IDENTITY()
select @@IDENTITY as NewID from tbl_newsletter
SELECT scope_identity()
Hier habe ich gelesen das die unter Umständen nicht zuverlässig ist.
https://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=328811&wa=wsignin1.0
Bin für jeden Ratschlag dankbar.
vielen Dank und viele Grüße
hawk