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

新しいSQLレコードIDを取得します

    SELECT SCOPE_IDENTITY() 
    

    @@ IDENTITYを使用すると予期しない結果が生じる可能性があるため、使用方法に注意してください。レコードを他のテーブルに挿入するトリガーにより、@@ IDENTITY値が変更されます。SCOPE_IDENTITY()は、現在のスコープのみから最後のIDを提供します。

    @@ IDENTITYとSCOPE_INSERT()の違いと、それらが異なる値を返す方法を示すサンプルを次に示します。

    use tempdb
    go
    create table table1
        (ID int identity)
    go
    create table table2
        (ID int identity(100, 1))
    go
    create trigger temptrig 
        on table1 
        for insert
    as
    begin
    
        insert  table2 
         default values;
    
    end
    go
    insert  table1 
    default values;
    select  SCOPE_IDENTITY(), 
            @@IDENTITY
    

    ここで誰も議論していないもう1つのオプションは、SQL 2005にあるOUTPUT句を使用することです。この場合、出力句を挿入に追加し、コードからそのレコードセットをキャッチする必要があります。これは、1つだけではなく複数のレコードを挿入する場合にうまく機能します...

    use tempdb
    go
    create table table1
        (ID int identity)
    go
    insert   table1 
    output   inserted.ID
    default values;
    --OR...
    insert   table1 
    output   inserted.$identity
    default values;
    


    1. SQLServerでの特定のログインに対する同時ユーザーセッションの制限

    2. mysqlはn個の最後の行から選択します

    3. PGD​​ay.IT2011の早期登録が開始されました

    4. DATE()の例– MySQL