sql >> データベース >  >> RDS >> Mysql

最後の挿入IDを取得する標準的な方法は何ですか?

    この回答を参照してくださいSQLで挿入された行IDを取得します

    つまり、MAX(ID)を除いて、これを行うためのクロスデータベースの方法はありませんが、これは保証された結果ではなく、多くの落とし穴があります。たとえば、

    • 他の挿入は、最後の挿入と最大クエリの間に来る可能性があります
    • トランザクションの多いテーブルでは使用できません(maxは読み取りロックを発行し、rdbms固有のメソッドはどのテーブルからも読み取りません)

    Identity / autonumber / auto_increment / sequenceに関連するANSI規格は、 SQL:2003 すべての主要なRDBMSによる実装を待っています。ほとんどの場合、Oracle/PostgreSQLシーケンスに似ています。

    SQL:2003のもう1つの変更点は、OUTPUT USING CLAUSEです。 しかし、それについての情報はほとんどありません。 SybaseとSQLServerは異なることを行っているため、どのように機能するかはまだ不明です。 SQLServerはそれを次のように実装します

    INSERT INTO TBL(..)
    OUTPUT inserted.identity_col
    INTO @sometablevar
    VALUES(..)
    


    1. UPDATEクエリのWHERE句のSELECTクエリ

    2. 子供のパーティーのデータモデル

    3. MySQL INSERT ... Javaでの重複キー更新:挿入/更新/変更なしの状態を区別する方法

    4. Oracle.DataAccessは、VisualStudio2013では選択できません