この回答を参照してください
つまり、MAX(ID)を除いて、これを行うためのクロスデータベースの方法はありませんが、これは保証された結果ではなく、多くの落とし穴があります。たとえば、
- 他の挿入は、最後の挿入と最大クエリの間に来る可能性があります
- トランザクションの多いテーブルでは使用できません(maxは読み取りロックを発行し、rdbms固有のメソッドはどのテーブルからも読み取りません)
Identity / autonumber / auto_increment / sequenceに関連するANSI規格は、 SQL:2003で最初に登場しました。 a> すべての主要なRDBMSによる実装を待っています。ほとんどの場合、Oracle/PostgreSQLシーケンスに似ています。
SQL:2003のもう1つの変更点は、OUTPUT USING CLAUSE
です。 しかし、それについての情報はほとんどありません。 SybaseとSQLServerは異なることを行っているため、どのように機能するかはまだ不明です。 SQLServerはそれを次のように実装します
INSERT INTO TBL(..)
OUTPUT inserted.identity_col
INTO @sometablevar
VALUES(..)