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

प्राथमिक कुंजी बाधा त्रुटि का उल्लंघन SQL

डिज़ाइन के अनुसार, आपकी तालिका [cresql].[dbo].[AR_Transactions] माना जाता है कि प्राथमिक कुंजी के लिए केवल एक मान होना चाहिए - आपके मामले में, यह कॉलम का एक संयोजन प्रतीत होता है जो इस पीके को बनाते हैं।

यह कोई SQL समस्या नहीं है, लेकिन यह एक डिज़ाइन अवधारणा लगती है।

आपको पता लगाना चाहिए कि किस संयोजन से आपकी प्राथमिक कुंजी बन रही है - यह हो सकता है कि डिज़ाइन में कहा गया हो कि आप एक बार सम्मिलित कर सकते हैं और बाद में उस संयोजन के लिए अपडेट कर सकते हैं (हालाँकि मैं इसे अच्छा डिज़ाइन नहीं मानूंगा)।

संपादित करें

चूंकि Trans_Id PK है, और आप अपने इंसर्ट में उस कॉलम का उपयोग नहीं कर रहे हैं, इसे या तो IDENTITY के रूप में, DEFAULT (brrrrr) के रूप में, या TRIGGER का उपयोग करके डाला जा रहा है।

पहचान: यह देखने के लिए जांचें कि क्या पहचान विनिर्देश खराब हो गया है। यदि ऐसा है, तो बस इसे रीसेट करें। यहां बताया गया है कि कैसे मैं टी-एसक्यूएल टेबल वेरिएबल में एक पहचान कॉलम को कैसे संशोधित कर सकता हूं?

डिफ़ॉल्ट: यह एक अजीब विकल्प है, और आपको उस व्यक्ति से पूछना पड़ सकता है जिसने डेटाबेस तैयार किया है, दस्तावेज़ीकरण पढ़ा है, या बस इसे स्वयं ही समझ लें। किसी भी मामले में, यह एक बहुत ही असामान्य विकल्प है।

ट्रिगर: ट्रिगर ढूंढें और कोड के माध्यम से पढ़ें कि यह क्या कर रहा है। यहां बताया गया है कि ट्रिगर्स की सूची कैसे खोजें यह जांचने का सबसे पोर्टेबल तरीका क्या है कि SQL सर्वर में ट्रिगर मौजूद है या नहीं?

वैकल्पिक परिदृश्य:

एक ट्रिगर हो सकता है जो एक ऑडिट तालिका में सम्मिलित होता है जिसमें समस्या हो सकती है। जांचें कि क्या तालिका में कोई अन्य ट्रिगर हैं और देखें कि वे क्या करते हैं।




  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 सर्वर में सभी डेटाबेस में सभी तालिकाओं के लिए कॉलम नाम कैसे खोजें

  2. SQL अद्यतन क्वेरी में कुल कार्य?

  3. SQL सर्वर में CHARINDEX () बनाम PATINDEX () - क्या अंतर है?

  4. संबंधपरक डेटाबेस में उपवर्ग की अखंडता बनाए रखना

  5. डिग्री () SQL सर्वर में उदाहरण