Zitat von
Phoenix:
Warum auch? Wenn ich so spezialdinger benutze bin ich nicht mehr flexibel genug um später kurz die
DB auszutauschen, und das könnte hier sogar irgendwann nötig werden.
Dieses "Spezialding" hat seine Entsprechung in jedem besseren
DBMS.
In SQL2005 heißt es Output[1] und gibt leider keine Parameterwerte sondern eine Ergebnismenge zurück.
In Firebird2 heißt es ebenfalls Returning[1] und funktioniert wie im
SQL server, sieht aber wie in Oracle aus.
Es ist die Aufgabe jedes noch so kleinen ORMs das wegzuabstrahieren.
Denn ohne Returning/Output würde man ja die ID des neuen Datensatzes nicht kennen.
Oder man müsste in
MSSQL auf das abartig lahme @@IDENTITY zurückgreifen.
[1]
SQL-Code:
INSERT INTO SomeTable
OUTPUT Inserted.Id
(SomeField)
VALUES
(@SomeField)
[2]
SQL-Code:
INSERT INTO SomeTable
(SomeField)
VALUES
(:SomeField)
RETURNING Id