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

SQL सर्वर 2008 - यदि मौजूद नहीं है तो अन्य अपडेट करें

पहली नज़र में आपका मूल प्रयास बहुत करीब लगता है। मैं मान रहा हूँ कि क्लॉकडेट एक डेटटाइम फ़ील्ड है इसलिए इसे आज़माएँ:

IF (NOT EXISTS(SELECT * FROM Clock WHERE cast(clockDate as date) = '08/10/2012') 
    AND userName = 'test') 
BEGIN 
    INSERT INTO Clock(clockDate, userName, breakOut) 
    VALUES(GetDate(), 'test', GetDate()) 
END 
ELSE 
BEGIN 
    UPDATE Clock 
    SET breakOut = GetDate()
    WHERE Cast(clockDate AS Date) = '08/10/2012' AND userName = 'test'
END 

ध्यान दें कि getdate आपको वर्तमान दिनांक देता है। यदि आप किसी तिथि (बिना समय के) की तुलना करने का प्रयास कर रहे हैं, तो आपको कास्ट करने की आवश्यकता है या समय तत्व तुलना को विफल कर देगा।

यदि क्लॉकडेट डेटाटाइम फ़ील्ड नहीं है (बस दिनांक), तो SQL इंजन आपके लिए यह करेगा - सेट/सम्मिलित विवरण पर डालने की कोई आवश्यकता नहीं है।

IF (NOT EXISTS(SELECT * FROM Clock WHERE clockDate = '08/10/2012') 
    AND userName = 'test') 
BEGIN 
    INSERT INTO Clock(clockDate, userName, breakOut) 
    VALUES(GetDate(), 'test', GetDate()) 
END 
ELSE 
BEGIN 
    UPDATE Clock 
    SET breakOut = GetDate()
    WHERE clockDate = '08/10/2012' AND userName = 'test'
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 सर्वर में डेटाबेस फ़ाइल की आईडी वापस करने के लिए FILE_IDEX() का उपयोग करें

  2. ब्रेंट ओजर SQL सर्वर आंतरिक और बाहरी विखंडन की व्याख्या करता है

  3. लिंक से एसक्यूएल डेटटाइम मान स्थानीय हैं (तरह =अनिर्दिष्ट) - मैं इसे यूटीसी कैसे बना सकता हूं?

  4. SQL सर्वर में FORMAT () द्वारा समर्थित कस्टम दिनांक/समय प्रारूप स्ट्रिंग्स

  5. सी # से थोक डेटाबेस डालने का सबसे अच्छा तरीका क्या है?