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

रिकॉर्ड डालने का सबसे अच्छा अभ्यास क्या है यदि यह पहले से मौजूद नहीं है?

जब आपको किसी शर्त पर रिकॉर्ड की विशिष्टता की गारंटी देने की आवश्यकता होती है जिसे अद्वितीय या प्राथमिक कुंजी बाधा द्वारा व्यक्त नहीं किया जा सकता है, तो आपको वास्तव में यह सुनिश्चित करने की ज़रूरत है कि अस्तित्व और सम्मिलन की जांच एक लेनदेन में की जा रही है। आप इसे या तो हासिल कर सकते हैं:

  1. चेक और इंसर्ट करते हुए एक SQL स्टेटमेंट का उपयोग करना (आपका तीसरा विकल्प)
  2. उपयुक्त अलगाव स्तर के साथ लेनदेन का उपयोग करना

हालांकि एक चौथा तरीका है जो आपको अपने कोड को बेहतर ढंग से संरचित करने में मदद करेगा और यह उन परिस्थितियों में भी काम करेगा जहां आपको एक ही बार में रिकॉर्ड के बैच को संसाधित करने की आवश्यकता होती है। आप एक टेबल वेरिएबल या एक अस्थायी टेबल बना सकते हैं, उन सभी रिकॉर्ड्स को सम्मिलित कर सकते हैं जिन्हें वहां डालने की आवश्यकता है और फिर इस वेरिएबल के आधार पर INSERT, UPDATE और DELETE स्टेटमेंट लिखें।

नीचे (छद्म) कोड इस दृष्टिकोण को प्रदर्शित करता है:

-- Logic to create the data to be inserted if necessary

DECLARE @toInsert TABLE (idCol INT PRIMARY KEY,dataCol VARCHAR(MAX))
INSERT INTO @toInsert (idCol,dataCol) VALUES (1,'row 1'),(2,'row 2'),(3,'row 3')

-- Logic to insert the data

INSERT INTO realTable (idCol,dataCol)
SELECT TI.*
FROM @toInsert TI
WHERE NOT EXISTS (SELECT 1 FROM realTable RT WHERE RT.dataCol=TI.dataCol)

कई परिस्थितियों में मैं इस दृष्टिकोण का उपयोग करता हूं क्योंकि यह टीएसक्यूएल कोड को पढ़ने में आसान बनाता है, रिफैक्टर करना और यूनिट परीक्षणों को लागू करना संभव बनाता है।



  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 INSERT INTO

  2. आइडेंटिटी कॉलम के साथ टेबल कैसे बनाएं

  3. कन्वर्ट () SQL सर्वर में

  4. SQL सर्वर में संदर्भित निकाय खोजें:sys.dm_sql_referenced_entities

  5. सभी तालिकाओं के लिए SQL सर्वर डेटाबेस में विदेशी कुंजी बाधाओं को कैसे छोड़ें - SQL सर्वर / TSQL ट्यूटोरियल भाग 72