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

INSERT ステートメントの OUTPUT 句を使用して ID 値を取得するにはどうすればよいですか?

    次のように、新しく挿入された ID を SSMS コンソールに出力することができます。

    INSERT INTO MyTable(Name, Address, PhoneNo)
    OUTPUT INSERTED.ID
    VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
    

    これは、たとえばからも使用できます。 C# で、呼び出し元のアプリに ID を返す必要がある場合 - .ExecuteScalar() を使用して SQL クエリを実行するだけです (代わりに .ExecuteNonQuery() ) 結果の ID を読み取る

    または、新しく挿入された ID を取得する必要がある場合 T-SQL 内で (たとえば、後でさらに処理するため)、テーブル変数を作成する必要があります:

    DECLARE @OutputTbl TABLE (ID INT)
    
    INSERT INTO MyTable(Name, Address, PhoneNo)
    OUTPUT INSERTED.ID INTO @OutputTbl(ID)
    VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
    

    このようにして、複数の値を @OutputTbl に入れることができます それらに対してさらに処理を行います。 「通常の」一時テーブルを使用することもできます (#temp ) または「実際の」永続テーブルを「出力ターゲット」としてここで使用することもできます。




    1. LISTAGG関数:文字列連結の結果が長すぎます

    2. AndroidとPhonegapを使用したSQLiteデータベースのストレージ

    3. ネストされたクラス-CustomRowMapper!!もう問題ありません!! - パート2

    4. MySQL:別のテーブルの値を1つの列に挿入します