منزل
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 إلى الحد الأقصى (المعرف) المخزنة الإجراء؟

P / S: آسف ، ربما كان السؤال ضعيف الصياغة.



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

إنه ممكن ، لكن هناك "لكن": ليس مضمونًا أن اثنين من المستخدمين في نفس الوقت لن يبدؤوا "بتدوير الدورة" ولن يتعثروا في نفس "الثقب" (أنا شخصياً أقيم هذا الاحتمال مرتفعًا جدًا). إذا كان ذلك ، بشرط المشكلة ، جائزًا ، ثم اذهب ، إن لم يكن ، انظر أعلاه.



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

إذا كنت تستخدم خادم SQL ، فمن المنطقي حل مثل هذه المشكلات باستخدام استعلام SQL ، أي شيء مثل هذا

حدد دقيقة (t1.ID) + 1
من tabX t1 اليسار انضمام tabX t2 على t1.ID = t2.ID + 1
حيث t2.ID هو NULL

سوف لا تزال تعمل بشكل أسرع من مبالغة البرنامج. ويمكنك أيضًا تنفيذ ذلك باستخدام دفتر اليومية للسجلات المحذوفة. يمكنك تعليق المشغل لحذف السجل (قبل) وحفظ كافة معرفات السجلات المحذوفة في جدول منفصل. في هذه الحالة ، عند إضافة سجلات جديدة ، لا يوجد تقريبًا أي ضياع للوقت للبحث (من الأهمية بمكان عند إضافة عدد كبير من السجلات). وحتى لا يلتقط اثنان من المستخدمين نفس المعرف ، يمكنك البحث وإضافة السجل في معاملة واحدة.



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 اليسار انضمام tabX t2 على t1.ID = t2.ID + 1
حيث t2.ID هو NULL

tabX - هذا هو الجدول الخاص بك. انها تتحد مع نفسها. نتيجة لذلك ، تحصل على طلب يتضمن عمودين لهما المعرف
الأول هو كل المعرفات في الجدول الخاص بك ،
الثاني - إذا كان ID + 1 هو ، ثم قيمته ، إن لم يكن ، ثم NULL

حيث حيث t2.ID هو NULL - يترك فقط تلك التي يكون فيها العمود الثاني هو NULL ، أي معرف + 1 مجاني.

min (t1.ID) + 1 - تُرجع الحد الأدنى لرقم الهوية المجاني.

اقرأ وصف لغة SQL بمزيد من التفاصيل.

يحتوي هذا الطلب على عيب واحد فقط ، ويجب أن يكون هناك سجل واحد على الأقل في الجدول ، وسيكون رقم الهوية المجانية دائمًا أكبر من الحد الأدنى المشغول.
ولكن هذه قصة أخرى ...



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

أنا لا أعرف لماذا ، ولكن لدي هذا الطلب معلقة القاعدة حتى الموت.
حاول في القنصل ، خبير



صفحات: 1 فرع كامل

المنتدى: "القواعد";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

الطابق العلوي





الذاكرة: 0.59 ميغابايت
الوقت: 0.027 ج
14-22350
قطع الطاقم
2001-11-04 16:49
2002.01.08
أجلس هنا ، ولا شيء أفعله!


4-22469
Zibaro
2001-11-01 19:38
2002.01.08
صورة في القائمة المنبثقة (من زر


3-21963
SZAP
2001-12-05 11:53
2002.01.08
سرعة


3-21912
سيرجي ن.
2001-12-04 06:23
2002.01.08
التعامل مع التواريخ من IB إلى دلفي والعودة


1-22019
Hex_for_delphi
2001-12-17 20:21
2002.01.08
كيف تكتب المدرب!





الأفريكانية الألبانية العربية الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch الانجليزية الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية الروسية صربي السلوفاكيّة سلوفيني الإسبانية السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский