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

MS-SQL クエリ - ストアド プロシージャを介して取得された更新レコード

    1 つのコマンドを試してください:

    CREATE PROCEDURE dbo.getNewAds
    (
    @region  --lazy, declare type!!
    )
    AS
    BEGIN
        UPDATE TOP (1) Adverts
            SET adShown = adShown + 1
            OUTPUT INSERTED.ID
            WHERE adRegion = @region
    END
    

    UPDATE (Transact-SQL) 言います:

    しかし、私の限られたテスト (テスト テーブルの行数は多くありません) では、毎回同じ行を更新し、OP が毎回異なる行を更新しようとしているように見えます。

    これを試してください:

    CREATE PROCEDURE dbo.getNewAds
    (
    @region  --lazy, declare type!!
    )
    AS
    BEGIN
        DECLARE @ID int
    
        --select row to update
        SELECT TOP 1 
            @ID=Id 
            FROM Adverts
            WHERE adRegion = @region
            ORDER BY NEWID()
    
    
        --update and return result set in one command
        UPDATE TOP (1) Adverts
            SET adShown = adShown + 1
            OUTPUT INSERTED.ID
            WHERE [email protected]
    END
    


    1. tomcatデータソースを使用してmysqlに接続しようとするとアクセスが拒否されました

    2. Postgres:既知の値を持つ文字列列による順序

    3. 列のデータ型を配列から整数に変更します

    4. 特定の文字の後のSQLSELECTすべて