Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

MS-SQL заявка - Актуализирайте записа, извлечен чрез съхранена процедура

опитайте една команда:

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

АКТУАЛИЗАЦИЯ (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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо не използвате varchar(max)?

  2. Генериране на SQL Създаване на скриптове за съществуващи таблици с Query

  3. Деактивирайте всички неклъстерирани индекси

  4. Как да създадете нова ODBC връзка към един отдалечен SQL Server

  5. ExecutenonQuery не работи