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

SQL सर्वर 2012 चेक बाधा अद्यतन या DELETE कथन पर फायरिंग नहीं कर रहा है

हम इस तरह से अपडेट पर चेक को बाध्य कर सकते हैं।
मान लें कि आपके पास इस तरह की एक टेबल है

create table UserTest(Id int, IsEnabled bit, [GroupId] int)

अब, हम यह जांचना चाहते हैं कि [GroupId] . द्वारा केवल 1 उपयोगकर्ता सक्षम है ।

आमतौर पर बाधा कुछ इस तरह दिखेगी

ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled  CHECK (dbo.checkOnlyOne(GroupId)=1)

जब तक आप GroupId . को अपडेट नहीं करते, तब तक अपडेट किए गए रिकॉर्ड पर यह बाधा ट्रिगर नहीं होगी .
इसलिए, हमें बाध्य करके IsEnabled कॉलम को मान्य करने के लिए बाध्य करना होगा

ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled  CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)

कोई फर्क नहीं पड़ता कि आप फ़ंक्शन में IsEnabled मान का उपयोग करते हैं या नहीं।




  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 सर्वर प्रोफाइलर में SQL सर्वर क्वेरी के लिए पैरामीटर मान कैसे प्राप्त करूं?

  3. लेन-देन अलगाव स्तर के दायरे

  4. SQL Server 2008 डेटाबेस में सभी तालिकाओं में एक सामान्य स्तंभ का न्यूनतम और अधिकतम स्तंभ मान ज्ञात करें

  5. एकत्रीकरण के बिना एकाधिक स्तंभों को कैसे पिवट करें