Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एमएस-एसक्यूएल क्वेरी - संग्रहित प्रक्रिया के माध्यम से पुनर्प्राप्त अद्यतन रिकॉर्ड

एक ही आदेश का प्रयास करें:

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

अपडेट (ट्रांजैक्ट-एसक्यूएल) कहते हैं कि:

लेकिन मेरे सीमित परीक्षण में (परीक्षण तालिका में कई पंक्तियाँ नहीं), ऐसा लगता है कि यह हर बार एक ही पंक्ति को अपडेट करता है, और यह कि ओपी हर बार एक अलग पंक्ति को अपडेट करने का प्रयास कर रहा है।

तो इसे आजमाएं:

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. ASP.NET में बूटस्ट्रैप मोडलपॉपअप का उपयोग करना

  2. एक्सएमएल के नेस्टेड पदानुक्रम को एसक्यूएल टेबल में कैसे बदलें

  3. एसक्यूएल सर्वर ट्रिगर सहायता - एक ही टेबल अपडेट

  4. लाखों रिकॉर्ड डालने पर मैं SQL सर्वर में लॉग वृद्धि को कैसे रोक सकता हूं

  5. SQL सर्वर 2008 पर 70 मिलियन अत्यंत उच्च घनत्व वाले स्थानिक बिंदु क्लाउड पर निकटतम पड़ोसी क्वेरी को अनुकूलित करें