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

एमएस एसक्यूएल सर्वर में कॉलम परिवर्तन का पता लगाने के लिए सबसे प्रभावी तरीका

आइए शुरू करते हैं मैं कभी नहीं करूंगा और मेरा मतलब है कि कभी भी एक ट्रिगर में एक संग्रहित प्रो का आह्वान न करें। एक बहु पंक्ति डालने के लिए आपको proc के माध्यम से कर्सर करना होगा। इसका मतलब है कि सेट-आधारित क्वेरी (जैसे कि सभी कीमतों को 10% तक अपडेट करना) के बावजूद आपके द्वारा अभी-अभी लोड की गई 200,000 पंक्तियाँ टेबल को घंटों तक लॉक कर सकती हैं क्योंकि ट्रिगर लोड को संभालने के लिए बहादुरी से प्रयास करता है। इसके अलावा अगर खरीद में कुछ बदलता है, तो आप टेबल पर किसी भी इंसर्ट को तोड़ सकते हैं या टेबल को पूरी तरह से लटका भी सकते हैं। मैं एक दृढ़ विश्वासी हूं कि ट्रिगर कोड को ट्रिगर के बाहर और कुछ नहीं कहना चाहिए।

व्यक्तिगत रूप से मैं बस अपना काम करना पसंद करता हूं। अगर मैंने ट्रिगर में उन क्रियाओं को लिखा है जिन्हें मैं ठीक से करना चाहता हूं तो यह केवल वहीं अपडेट, डिलीट या इंसर्ट करेगा जहां कॉलम बदल गए हैं।

उदाहरण:मान लीजिए कि आप उस last_name फ़ील्ड को अपडेट करना चाहते हैं जिसे आप प्रदर्शन कारणों से वहां रखे गए असामान्यीकरण के कारण दो स्थानों पर संग्रहीत कर रहे हैं।

update t
set lname = i.lname
from table2 t 
join inserted i on t.fkfield = i.pkfield
where t.lname <>i.lname

जैसा कि आप देख सकते हैं कि यह केवल उन नामों को अपडेट करेगा जो मेरे द्वारा अद्यतन की जा रही तालिका में वर्तमान में मौजूद नाम से भिन्न हैं।

यदि आप ऑडिटिंग करना चाहते हैं और केवल उन पंक्तियों को रिकॉर्ड करना चाहते हैं जो बदल गई हैं तो सभी क्षेत्रों का उपयोग करके तुलना करें जैसे i.field1 <> d.field1 या i.field2 <> d.field3 (सभी क्षेत्रों के माध्यम से आदि)



  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 सर्वर में Msg 8117 "संचालन डेटा प्रकार varchar योग ऑपरेटर के लिए अमान्य है" को ठीक करें

  2. SQL 2008:पूर्ण पाठ खोज क्वेरी के लिए शब्दों को रोकें बंद करें

  3. SQL सर्वर गणितीय कार्य (पूरी सूची)

  4. मैं स्थानीय ड्राइव पर दूरस्थ SQL सर्वर डेटाबेस का बैकअप कैसे ले सकता हूं?

  5. SQL सर्वर सम्मिलित करें यदि मौजूद नहीं है तो सर्वोत्तम अभ्यास