2010-02-27 16 views
5

मैं निम्नलिखित MySQL तालिका के आधार पर एक क्षेत्र को अद्वितीय बनाएं ..एक और क्षेत्र

userid - foreign key 
date - primary key 
slot1 - 1st free slot 
slot2 - 2nd free slot 
slot3 - 3rd free slot 
slot4 - 4th free slot 
slot5 - 5th free slot 
slot6 - 6th free slot 
slot7 - 7th free slot 
slot8 - 8th free slot 

सभी स्लॉट एक ही दिन के लिए हैं, तो उपयोगकर्ता इनपुट कर सकते हैं कि वह दिन नि: शुल्क है के अलग अलग समय।

अब मैंने यह किया और यह काम किया और अब मैं एक समस्या पर ठोकर खाई। मैंने एक उपयोगकर्ता के लिए कुछ डेटा दर्ज किया है और अब जब मैं उसी तारीख के लिए किसी अन्य उपयोगकर्ता के लिए डेटा दर्ज करने का प्रयास करता हूं तो मैं नहीं कह सकता क्योंकि यह कहता है कि यह पहले से मौजूद है।

मैं इसे कैसे बना सकता हूं ताकि मैं एक ही उपयोगकर्ता को कई तिथियां दर्ज कर सकूं और दूसरा उपयोगकर्ता उसी तारीख में प्रवेश कर सके? ... लेकिन वही उपयोगकर्ता दो बार एक ही तारीख में प्रवेश नहीं कर सकता ... यह कैसे हो सकता है सामाप्त करो?

उत्तर

4

आप user_id और date पर एक समग्र PRIMARY KEY का उपयोग करना चाह सकते हैं।

तुम भी एक unique keyQuassnoi suggested के रूप में उपयोग कर सकते हैं, लेकिन यह वास्तव में अपने date क्षेत्र की तरह दिखता है अकेले एक वैध candidate for a primary key नहीं है।

3
ALTER TABLE mytable ADD CONSTRAINT ux_mytable_user_date UNIQUE KEY (user, date) 

आप date पर आप PRIMARY KEY कर दिया जाएगा।

आप या तो user_id, date पर एक बना सकते हैं (के रूप में डैनियल वसालो सुझाव दिया), या, अगर आप इस तालिका को देख करने की जरूरत है, (एक AUTO_INCREMENT स्तंभ के साथ, कहते हैं) एक किराए PRIMARY KEY पैदा करते हैं।

+0

यदि आप दिमाग में नहीं हैं तो आप इसे थोड़ा और समझ सकते हैं ??? मैं बिल्कुल नहीं समझता हूं कि आपने यहां कहा है ... –

+0

@ananworks: इसे देखें: http://en.wikipedia.org/wiki/Unique_key और यह: http://help.w3schools.com/sql/sql_unique अद्वितीय कुंजी पर मूल परिचय के लिए .asp। –

+0

thx ... बीमार chk it और c ... अगर मुझे अभी भी मदद की ज़रूरत है तो वापस आ जाएगा !! बहुत बार धन्यवाद! –

संबंधित मुद्दे