2009-10-22 7 views
17

मैं मैं एसक्यूएलहो रही है ईद एक पंक्ति की मैं Sql सर्वर में अद्यतन

UPDATE ITS2_UserNames 
    SET AupIp = @AupIp 
    WHERE @Customer_ID = TCID AND @Handle_ID = ID 

    SELECT @@ERROR AS Error, @@ROWCOUNT AS RowsAffected, SCOPE_IDENTITY() AS ID 

में अद्यतन एक पंक्ति की पहचान वापस जाने के लिए कोशिश कर रहा हूँ और मैं आईडी के लिए अशक्त बार आ रही है, मैं कैसे प्राप्त कर सकते हैं ?

उत्तर

40

@@identity और scope_identy() आपको नई पंक्ति, यानी की पहचान सौंपेगा। एक डालने के बाद। आपके अपडेट के बाद, पंक्ति की पहचान है ... @Customer_ID या @Handle_Id?

UPDATE ITS2_UserNames 
SET AupIp = @AupIp 
OUTPUT INSERTED.PrimaryKeyID 
WHERE @Customer_ID = TCID AND @Handle_ID = ID 
+2

मान लिया जाये कि वह SQL2005/2008 पर है, पाठ्यक्रम – MartW

+0

की नहीं, यह रूप में अच्छी तरह – MartW

+0

@CodeByMoonlight एसक्यूएल 2000 में बताया गया है: आप सही हैं –

0

आप रिकॉर्ड है कि अद्यतन से मेल पता लगाना चाहते हैं, तो आप इसे

के साथ एक का चयन करना चाहिए: यदि एक अलग क्षेत्र है, तो आप अद्यतन पंक्ति के आईडी लौटने के लिए आउटपुट खंड का उपयोग shoudl
Select IdColumn 
From ITS2_UserNames 
WHERE @Customer_ID = TCID AND @Handle_ID = ID 
+0

का उपयोग करना होगा यदि आप कॉलम को अपडेट कर रहे हैं तो भी यह काम नहीं करेगा – Talon

1

क्या आप पहले से ही @Handle_ID के साथ पंक्ति के पहचान मूल्य की पहचान नहीं कर रहे हैं? यदि ऐसा है, तो बस उपयोग करें:

SELECT @@ERROR AS Error, @@ROWCOUNT AS RowsAffected, @Handle_ID AS ID; 

यदि नहीं, तो क्या आप समझ सकते हैं कि कौन सा कॉलम पहचान कॉलम है?

संबंधित मुद्दे