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

अद्यतन पंक्ति प्राप्त करें

आप जो कर रहे हैं उसके आधार पर, आपको OUTPUT . के टेबल सिंटैक्स का उपयोग करने की आवश्यकता हो सकती है . एक अस्थायी तालिका / तालिका चर निर्दिष्ट करने की संभावना है।

DECLARE @T TABLE
(
    MyID INT NOT NULL
)

UPDATE Task
SET MyTime = GetDate(), MyUserId = @userid
OUTPUT INSERTED.MyID INTO @T
FROM (/* your FROM clause here */) Task

जीबीएन को मेरे आगे एक संपादन मिला है जो अनिवार्य रूप से ऊपर जैसा ही कहता है। मैं यह जोड़ना चाहता हूं कि ऐसा करने का एक और तरीका पहले आईडी को पकड़ना है और फिर आईडी द्वारा अपडेट करना है। साथ ही, TOP 1 का उपयोग लगभग हमेशा ORDER BY . के साथ किया जाना चाहिए ।

-- You may need to clean up the error handling. I just wanted
-- to put something simple in to remind that it is necessary.
DECLARE @userid INT; SET @userid = /* e.g., */ 1234
BEGIN TRANSACTION
IF @@ERROR <> 0 RETURN
DECLARE @TaskID INT
SET @TaskID = (SELECT TOP 1 TaskID FROM Task WITH (UPDLOCK) ORDER BY /* e.g., */ TaskID) -- TaskID should be the PK of MyTable. Must be unique.
IF @@ERROR <> 0 BEGIN ROLLBACK TRANSACTION RETURN END
UPDATE Task
SET MyTime = GETDATE(), MyUserId = @userid
WHERE TaskID = @TaskID
COMMIT TRANSACTION


  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 कथन के साथ)

  2. त्रुटि संदेश 4151 को ठीक करें "NULLIF के लिए पहले तर्क का प्रकार NULL स्थिरांक नहीं हो सकता क्योंकि SQL सर्वर में पहले तर्क के प्रकार को जानना होगा"

  3. साइन () SQL सर्वर में उदाहरण

  4. SQL सर्वर में @@ TEXTSIZE क्या है?

  5. "क्वेरी प्रतीक्षा में अनुमति नहीं है" SQL सर्वर में त्रुटि 101