sql >> Databáze >  >> RDS >> Sqlserver

Dotaz MS-SQL - Aktualizace záznamu načtená prostřednictvím uložené procedury

zkuste jeden příkaz:

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

AKTUALIZACE (Transact-SQL) říká, že:

ale při mém omezeném testování (v testovací tabulce není mnoho řádků) to vypadá, že aktualizuje pokaždé stejný řádek a že OP se pokaždé pokouší aktualizovat jiný řádek.

tak zkuste toto:

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. sloupec časového razítka mysql

  2. Pomalý dotaz MySQL pomocí řazení souborů

  3. Převést sloupec data a času na čas utc

  4. VYBERTE řádky MySQL, kde je dnešní datum mezi dvěma sloupci DATE