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

mySQLのSQLServer関数SCOPE_IDENTITY()に相当しますか?

    これ あなたが探しているものです:

    LAST_INSERT_ID()
    

    OPのコメントに応えて、次のベンチテストを作成しました。

    CREATE TABLE Foo
    (
        FooId INT AUTO_INCREMENT PRIMARY KEY
    );
    
    CREATE TABLE Bar
    (
        BarId INT AUTO_INCREMENT PRIMARY KEY
    );
    
    INSERT INTO Bar () VALUES ();
    INSERT INTO Bar () VALUES ();
    INSERT INTO Bar () VALUES ();
    INSERT INTO Bar () VALUES ();
    INSERT INTO Bar () VALUES ();
    
    CREATE TRIGGER FooTrigger AFTER INSERT ON Foo
        FOR EACH ROW BEGIN
            INSERT INTO Bar () VALUES ();
        END;
    
    INSERT INTO Foo () VALUES (); SELECT LAST_INSERT_ID();
    

    これは次を返します:

    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    |                1 |
    +------------------+
    

    したがって、LAST_INSERT_ID()を使用します テーブルのINSERTではなく、元のテーブルの トリガーの内側に挿入されました。

    編集: やっぱりSELECT LAST_INSERT_ID()の結果に気づきました 最後の結論は正しかったが、私の答えに示されているのは間違っていた。結果を正しい値に更新しました。



    1. postgresqlの国際化された正規表現

    2. 非オブジェクトのプロパティを取得しようとしています-CodeIgniter

    3. 個別のCREATETABLEを使用せずにSELECTステートメントで一時テーブルを作成します

    4. AWSS3のPostgreSQLバックアップメソッドの機能