Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

MS-SQL Query - Perbarui catatan yang diambil melalui Prosedur Tersimpan

coba satu perintah:

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

PERBARUI (Transact-SQL) mengatakan bahwa:

tetapi dalam pengujian terbatas saya (tidak banyak baris dalam tabel pengujian), sepertinya ia memperbarui baris yang sama setiap kali, dan OP mencoba memperbarui baris yang berbeda setiap kali.

jadi coba ini:

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. SQL Server REPLACE() vs TRANSLATE():Apa Perbedaannya?

  2. Cara menampilkan catatan beberapa kali termasuk interval hari berdasarkan tanggal mulai dan berakhir

  3. Apa arti sintaks RAISERROR()

  4. Cara Memperbaiki "Nama objek tidak valid 'OPENJSON'." di SQL Server

  5. SQL Server Query untuk menemukan Nilai CHI-SQUARE (Tidak Berfungsi)