SQL यह निर्धारित करने के लिए कि डेटा का कोई एकल टुकड़ा किसी अद्यतन या सम्मिलित करें में कुंजी द्वारा निष्पादित किया गया है या नहीं
यदि कोई कुंजी नहीं है या सम्मिलित करें जैसी प्रक्रिया में कोई कुंजी नहीं है, तो आमतौर पर कुंजी के आधार पर एक चयन किया जाता है, और प्रक्रिया यह जांचकर निर्धारित की जाती है कि क्या कोई मामला है। SQL Server 2008 भी एक "मर्ज" कथन जो आपको एक अद्यतन और एक सम्मिलित करें (और उसके बाद हटाएँ) एक एकल कथन के साथ करने के लिए अनुमति देता है जोड़ता है। हालांकि, यह दो तालिकाओं की तुलना है और एकल डेटा के लिए उपयुक्त नहीं है।
वास्तव में, एक चयनित कथन के साथ रिकॉर्ड की संख्या की जांच किए बिना अद्यतन और सम्मिलित करें का निर्धारण करके आसानी से एक पंक्ति को अद्यतन करने का एक तरीका है।
update [TableName]
set [ColumnName] = @value
-- : 他更新 SQL
where [KeyColumnName] = @value
-- : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
[ColumnName]
-- : 他更新 SQL
)
values
(
@value
-- : 他更新値
)
यहाँ मुख्य शब्द "@@ROWCOUNT" है। @@ROWCOUNT पंक्तियों की संख्या प्राप्त कर सकते हैं जिन पर पिछला SQL लागू किया गया था। पिछला कोड पहले अद्यतन कथन निष्पादित करता है, और यदि इसे अद्यतन किया गया है, तो @@ROWCOUNT 1 या उससे अधिक देता है, इसलिए यह अगले सम्मिलित करें कथन निष्पादित नहीं करता है। इसके विपरीत, यदि अद्यतन कथन में कोई पंक्ति अद्यतन नहीं की जाती है, तो @@ROWCOUNT 0 देता है, इसलिए IF कथन निर्णय द्वारा सम्मिलित करें निष्पादित करें.
चूंकि उपरोक्त SQL एक टेम्पलेट है, इसलिए उचित समय पर अद्यतन किए जाने वाले स्तंभ नामों और मानों को प्रतिस्थापित करें. @value सिर्फ एक चर नाम है, इसलिए इसे उस मान से बदलें जिसे आप अपडेट करना चाहते हैं।