2012-04-30 19 views
80

के लिए विदेशी कुंजी जोड़ें । मैं UserID को ActiveDirectories तालिका में संदर्भित करने का प्रयास कर रहा हूं। मुझे यह त्रुटि प्राप्त होती है:एसक्यूएल मैं एक विदेशी कुंजी बाधा के साथ एक मेज अद्यतन करने के लिए एसक्यूएल सर्वर 2008 में निम्नलिखित एसक्यूएल आदेश का उपयोग कर रहा है, तो मौजूदा स्तंभ

Foreign key 'UserID' references invalid column 'UserID' in referencing table 'Employees'.

+1

आप अपने दो तालिका स्कीमा प्रदान कर सके है? –

+0

इस लिंक को देखें http://stackoverflow.com/questions/35196951/how-can-id-assign-foreign-key-mysqli/35197004#35197004 – iOS

उत्तर

151

त्रुटि इंगित करती है कि आपके कर्मचारी तालिका में कोई उपयोगकर्ता आईडी कॉलम नहीं है। पहले कॉलम जोड़ने का प्रयास करें और फिर कथन दोबारा चलाएं।

ALTER TABLE Employees 
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID) 
    REFERENCES ActiveDirectories(id); 
+0

यह सही था। हमारा डीबी हमारे एड कॉलम को अपडेट नहीं कर रहा था। यह हल हो गया है लेकिन यह नहीं कि हमारा कॉलम स्थापित है, मैं अभी भी बाधा नहीं जोड़ सकता। 'संदर्भित तालिका' ActiveDirectories 'में कोई प्राथमिक या उम्मीदवार कुंजी नहीं है जो विदेशी कुंजी' FK__Employees__UserI__04E4BC85 'में संदर्भ कॉलम सूची से मेल खाती है। – ExceptionLimeCat

+0

ऐसा लगता है कि FK__Employees__UserI__04E4BC85 द्वारा जो भी कॉलम संदर्भित किया गया है, उसे प्राथमिक कुंजी या सक्रिय निर्देशिका में उम्मीदवार कुंजी के रूप में परिभाषित नहीं किया गया है तालिका। – BluesRockAddict

+0

हाँ, लेकिन यह निश्चित रूप से ActiveDirectories तालिका – ExceptionLimeCat

16

शायद आपको अपने कॉलम पीछे की ओर मिल गए हैं ??

ALTER TABLE Employees 
ADD FOREIGN KEY (UserID)   <-- this needs to be a column of the Employees table 
REFERENCES ActiveDirectories(id) <-- this needs to be a column of the ActiveDirectories table 

यह हो सकता है कि स्तंभ Employees तालिका में ID कहा जाता है, और ActiveDirectories तालिका में UserID?

फिर अपने आदेश होना चाहिए:

ALTER TABLE Employees 
ADD FOREIGN KEY (ID)     <-- column in table "Employees" 
REFERENCES ActiveDirectories(UserID) <-- column in table "ActiveDirectories" 
+1

मुझे इसकी अजीब पता है लेकिन दुर्भाग्य से ActiveDirectory तालिका आईडी – ExceptionLimeCat

2

MySQL/एसक्यूएल सर्वर/Oracle/एमएस एक्सेस:

ALTER TABLE Orders 
ADD FOREIGN KEY (P_Id) 
REFERENCES Persons(P_Id) 

एक विदेशी कुंजी बाधा के नामकरण, और एक विदेशी कुंजी बाधा परिभाषित करने के लिए अनुमति देने के लिए एकाधिक कॉलम पर, निम्न SQL वाक्यविन्यास का उपयोग करें:

MySQL/SQL सर्वर/ओरेकल/एमएस एक्सेस:

ALTER TABLE Orders 
ADD CONSTRAINT fk_PerOrders 
FOREIGN KEY (P_Id) 
REFERENCES Persons(P_Id) 
0

विदेशी कुंजी निर्माण के रास्ते ActiveDirectories (आईडी) के लिए सही, मुझे लगता है कि मुख्य गलती आप ActiveDirectories तालिका में आईडी के लिए प्राथमिक कुंजी उल्लेख नहीं किया

0
ALTER TABLE Faculty 
WITH CHECK ADD CONSTRAINT FKFacultyBook 
FOREIGN KEY FacId 
REFERENCES Book Book_Id 

ALTER TABLE Faculty 
WITH CHECK ADD CONSTRAINT FKFacultyStudent 
FOREIGN KEY FacId 
REFERENCES Student StuId 
+3

में नाम आपको अपने उत्तर के साथ कुछ स्पष्टीकरण देना चाहिए – fen1x