घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "मामले";
वर्तमान संग्रह: 2002.01.08;
डाउनलोड करें: [xml.tar.bz2];

नीचे

पहली मुफ्त आईडी निर्धारित करें इसी तरह की शाखाएँ खोजें


S_King   (2001-12-04 10:18) [0]

संग्रहित प्रक्रिया में मुक्त 1 संख्या का निर्धारण कैसे करें विज़ार्ड की मदद करें? हमारे पास एक भरा मैदान (1,2,4,5 ...) है, अर्थात प्रक्रिया को 3 जारी करना चाहिए।



Vadim   (2001-12-04 10:51) [1]

केवल "कुटिल" - पंक्तियों के माध्यम से, या सहायक तालिका की सहायता से खोजें। शायद आप कार्य को अलग तरीके से सेट कर सकते हैं?



Владислав   (2001-12-04 10:57) [2]

एक चयन करें, आरोही क्रम में क्रमबद्ध। सभी रिकॉर्ड्स के माध्यम से चलाएं (अच्छी तरह से, सभी नहीं, लेकिन जब तक आपको अपनी ज़रूरत का नंबर नहीं मिल जाता है) तब तक जो आपको चाहिए और उपयोग करें।

केवल यदि आप एक अद्वितीय संख्या प्राप्त करना चाहते हैं, तो यह सबसे अच्छा विकल्प नहीं है (और शायद सबसे खराब)। कल्पना कीजिए कि यदि दो उपयोगकर्ता एक साथ इतनी संख्या प्राप्त करते हैं तो क्या होगा।



Yuvich   (2001-12-04 16:11) [3]

यदि कार्य वास्तव में ऐसा है, तो व्लादिस्लाव द्वारा वर्णित स्थिति को समाप्त करने के लिए ("कल्पना करें कि यदि दो उपयोगकर्ता एक ही समय में इस तरह की संख्या प्राप्त करते हैं तो क्या होता है।"), आपको वही लागू करना चाहिए जो वादिम सुझाता है ("सहायक तालिका का उपयोग करके")।

सहायक तालिका कमरों में "छेद" की एक सूची है। छेद कैसे बनाया गया था - यह इस तालिका में डाला गया था; छेद कैसे भरें - इस तालिका से न्यूनतम संख्या पढ़ें और इस तालिका से इस संख्या को हटा दें। सब कुछ ट्रिगर्स में किया जाता है और जब "छेद तालिका" लॉक होती है, तो दो उपयोगकर्ता कभी भी एक ही नंबर नहीं पढ़ेंगे। यदि पथरी विधि का उपयोग किया जाता है, तो आपको संपूर्ण "लक्ष्य तालिका" को अवरुद्ध करने की आवश्यकता है - जो अन्य उपयोगकर्ताओं के लिए बुरा है जो केवल डेटा पढ़ सकते हैं।



S_King   (2001-12-04 16:43) [4]

यह सब समझ में आता है, लेकिन चक्र के माध्यम से स्क्रॉल करना संभव हो सकता है।
स्टोर में 1 से अधिकतम (Id) तक। प्रक्रिया?

P / S: क्षमा करें, यह एक खराब रूप से तैयार किया गया प्रश्न हो सकता है।



Vadim   (2001-12-04 16:52) [5]

यह संभव है, लेकिन एक "लेकिन" है: यह गारंटी नहीं है कि दो उपयोगकर्ता एक साथ "चक्र को स्पिन करना" शुरू नहीं करेंगे और एक ही "छेद" पर ठोकर नहीं खाएंगे (मैं व्यक्तिगत रूप से इस संभावना को बहुत अधिक आंकता हूं)। यदि, समस्या की स्थिति से, यह अनुमेय है, तो, यदि नहीं, तो ऊपर देखें।



dmitryK   (2001-12-04 17:12) [6]

यदि आप SQL सर्वर का उपयोग करते हैं, तो ऐसी समस्याओं को SQL क्वेरी के साथ हल करना तर्कसंगत है, अर्थात। कुछ इस तरह

मिनट (t1.ID) + 1 का चयन करें
tabX से t1 बाईं ओर t2.ID = t1.ID + 2 पर शामिल हों
जहां t2.ID कहां NULL है

यह अभी भी तेज बल की तुलना में तेजी से काम करेगा। और हटाए गए रिकॉर्ड के लॉग की मदद से आप इसे लागू भी कर सकते हैं। आप रिकॉर्ड (befora) को हटाने के लिए ट्रिगर लटकाते हैं और हटाए गए रिकॉर्ड की सभी आईडी को एक अलग तालिका में सहेजते हैं। इस मामले में, नए रिकॉर्ड जोड़ते समय, वस्तुतः खोज के लिए समय की कोई हानि नहीं होती है (एक साथ बड़ी संख्या में रिकॉर्ड जोड़ते समय महत्वपूर्ण)। और ताकि दो उपयोगकर्ता एक आईडी पर कब्जा न करें, और आप एक लेनदेन में रिकॉर्ड में एक प्रविष्टि जोड़ दें।



S_King   (2001-12-05 09:55) [7]

क्षमा करें दोस्तों, लेकिन मैंने कई उपयोगकर्ताओं के बारे में नहीं पूछा ...
लेकिन एकल तालिका के लिए एक चक्र कैसे बनाया जाए?



dmitryK   (2001-12-05 10:49) [8]

कुछ अब मुझे समझ नहीं आ रहा है, आपने पूछा कि न्यूनतम मुफ्त आईडी कैसे खोजें। मैंने आपको एक क्वेरी दी कि यह कैसे करना है। क्यों, एक चमत्कार, क्या आपको भी एक चक्र आयोजित करने की आवश्यकता है ????



S_King   (2001-12-05 11:21) [9]

मैं, जो क्वेरी पाठ को समझ नहीं पाया, क्या यह उसी तालिका के लिए बनाना संभव है?



dmitryK   (2001-12-05 12:33) [10]

मिनट (t1.ID) + 1 का चयन करें
tabX से t1 बाईं ओर t2.ID = t1.ID + 2 पर शामिल हों
जहां t2.ID कहां NULL है

tabX - यह आपकी तालिका है। वह खुद को एकजुट करती है। नतीजतन, आपको एक अनुरोध मिलता है जिसमें आईडी के साथ दो कॉलम शामिल हैं
आपकी तालिका में पहली आईडी है,
दूसरा - यदि ID + 1 है, तो उसका मान, यदि नहीं है, तो NULL

जहाँ t2.ID NULL है - केवल वही छोड़ता है जहाँ दूसरा कॉलम NULL है, अर्थात् ID + 1 मुफ्त।

न्यूनतम (t1.ID) + 1 - न्यूनतम मुफ्त आईडी नंबर देता है।

SQL भाषा के विवरण के बारे में और पढ़ें।

इस तरह के अनुरोध में केवल एक खामी है, तालिका में कम से कम एक रिकॉर्ड होना चाहिए, और मुफ्त आईडी संख्या हमेशा न्यूनतम व्यस्त से अधिक होगी।
लेकिन यह एक और कहानी है ...



S_King   (2001-12-05 16:32) [11]

मुझे नहीं पता कि क्यों, लेकिन मेरे पास यह क्वेरी डेटाबेस को मौत के लिए लटका देती है।
सांत्वना, विशेषज्ञ में कोशिश की



पन्ने: 1 पूरी शाखा

फोरम: "मामले";
वर्तमान संग्रह: 2002.01.08;
डाउनलोड करें: [xml.tar.bz2];

ऊपर









मेमोरी: 0.85 एमबी
समय: 0.036 c
4-22509
करण
2001-11-08 12:50
2002.01.08
GetkeyboardState- क्या करता है?


7-22446
विरोधाभास
2001-09-25 19:12
2002.01.08
याद मत करो! खैर, बहुत आवश्यक है।


1-22225
Reyst
2001-12-16 15:56
2002.01.08
फाइल करने के लिए संसाधन नहीं बचा सके


1-22084
मिखाइलोव दिमित्री
2001-12-19 14:53
2002.01.08
घटना का ताला


4-22456
RedMax
2001-11-01 11:10
2002.01.08
COM NetMeeting ऑब्जेक्ट्स





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский