6

単純なクライアントからログファイルに情報を送信し、作成されたIDを使用してさらに処理したいと思います。

次の使い方はSCOPE_IDENTITY()正しいですか?

CREATE PROCEDURE [dbo].[LogSearch]
    @userName       VARCHAR(50),
    @dateTimeStart  DATETIME        
AS
BEGIN
SET NOCOUNT ON;


    INSERT INTO [WH].[dbo].[tb_Searches]
            (
            [UserName],
            [DateTimeStart]
            )
    SELECT  @userName, 
        @dateTimeStart;

    SELECT SCOPE_IDENTITY() AS ProfileKey;

END;

編集

コードを次のように編集しました。

ALTER PROCEDURE [dbo].[LogSearch]
    @userName   VARCHAR(50),
    @dateTimeStart  DATETIME
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [WH].[dbo].[tb_Searches]
            (
            [UserName],[DateTimeStart]
            )
    VALUES  (@userName, @dateTimeStart);

    RETURN SCOPE_IDENTITY();

END;
4

3 に答える 3

3

SCOPE_IDENTITY次のように、2 つの別個のステートメントで使用することもできます。

もちろん、テーブルにIDフィールドがあると仮定します

Insert into [ABCTable]
([A], [B])
select 'WhateverA', 'WhateverB'

次にSCOPE_IDENTITY()、次のようにWhere句で関数を使用します。

Update [ABCTable] Set [A] = 'UpdateA', [B] = 'UpdateB'
Where IdentityField = SCOPE_IDENTITY()

したがって、scope_identity は、挿入されたばかりのレコードへの信頼できるリンクです。

于 2016-04-22T17:08:48.263 に答える