sql - How do I check constraints between two tables when inserting into a third table that references the other two tables? -


इस उदाहरण स्कीमा पर विचार करें:

  ग्राहक (इंट ग्राहकआईडी पीके, ....) कर्मचारी (पूर्णांक EmployeeID pk, पूर्णांक ग्राहक आईडी संदर्भ Customer.CustomerId, ....) WorkItem (पूर्णांक WorkItemId pk, पूर्णांक ग्राहक आईडी संदर्भ Customer.CustomerId, अशक्त पूर्णांक EmployeeID का संदर्भ Employee.EmployeeId, ....)   

मूल रूप से, तीन तालिकाओं:

  • एक प्राथमिक कुंजी और कुछ अतिरिक्त कॉलम के साथ एक ग्राहक तालिका
  • प्राथमिक कुंजी के साथ एक कर्मचारी की मेज, एक विदेशी कुंजी बाधा ग्राहक टेबल प्राथमिक कुंजी के संदर्भ में, ग्राहक के कर्मचारी का प्रतिनिधित्व करते हैं।
  • एक कार्य आइटम तालिका, जो ग्राहक के लिए काम करता है, और विशिष्ट कर्मचारी के बारे में भी जानकारी देता है, जो काम के लिए किया गया था। < / Li>

मेरा प्रश्न है

यदि उदाहरण के लिए स्कॉट (कर्मचारी) माइक्रोसॉफ्ट (ग्राहक) पर काम करता है, और जेफ (मैं), डेटाबेस स्तर पर, जांच कर सकता है कि कर्मचारी वास्तव में एक ग्राहक से जुड़े हुए हैं। कर्मचारी) स्टैक ओव्हरफ्लो (ग्राहक) पर काम करता है, मैं किसी एक वस्तु को डेटाबेस में कार्य आइटम जोड़ने से कैसे रोक सकता हूं, ग्राहक = माइक्रोसॉफ्ट के साथ, और कर्मचारी = जेफ़, जो समझ नहीं आते?

क्या मैं यह कर सकता हूँ चेक बाधाओं या विदेशी कुंजी के साथ या मैन्युअल रूप से इसके लिए परीक्षण करने के लिए मुझे एक ट्रिगर की आवश्यकता है?

इसमें उल्लेख होना चाहिए कि मैं SQL सर्वर 2008 का उपयोग कर रहा हूं।

अद्यतन करें: मैं जोड़ने कि WorkItem.EmployeeId अशक्त हो सकता है चाहिए।

धन्यवाद, Egil।

एक समग्र स्तंभ पर एक विदेशी कुंजी (ग्राहक आईडी, EmployeeID) काम नहीं करेंगे

  ALTER तालिका WorkItem जोड़ें बाधा FK_Customer_Employee विदेशी कुँजी (ग्राहक आईडी, EmployeeID) संदर्भ कर्मचारी (ग्राहक आईडी, EmployeeID);  

Comments