سؤال

لدي جدول في قاعدة البيانات الخاصة بي مع حقل واحد معلن باسم giveacodicetagpre.

لا يوجد autoincrement.

هنا لدي شك في كيفية تحديث Rowid أثناء الإدراج بعد حذف.ما لوحظته هو

  1. إذا كان معرف الصف الأخير هو x ويتم حذفه، فإن الصف التالي مدرج يحصل على معرف x.

    ولكن إذا قمت بحذف بعض الصفوف الأخرى مع المعرف

    يرجى تأكيده هو حق ملاحظتي (Rowid تم إعادة استخدامها فقط إذا تم حذف الصفوف الأخير وليس بين الصفوف.)

    رأيت التفسير ل AutoineCrement.أريد أن أعرف السلوك عند عدم تعيين أي autoincrement

هل كانت مفيدة؟

المحلول

الكلمة الأساسية للسيارات غير مطلوبة لجداول SQLite لإنشاء القيم الرئيسية الأساسية تلقائيا .. ما الذي تضيفه إلى قاعدة البيانات سيتم إضافته كصف آخر ... لذلك إذا قمت بحذف الصف الأخير (x) .. سيتم إضافة عنصر جديد في موقع X. إذا قمت بحذفها من الوسط أم لا .. عنصر جديدإضافة إضافة إلى x + 1 ...

على استخدام زيادة التلقائي .. إذا قمت بحذف العنصر الأخير في X Positoy، فسيتم إنشاء معرف التالي X + 1 بواسطة خوارزمية AutoIncrement .. Makin الإضافة التالية في موقع X + 1 ..

نصائح أخرى

بدون مجموعة AutoIncrement، سيكون الصف اسم مستعار ل Rowid ...

هذا هو ما يقوله الأسئلة الشائعة:

إذا لم يتم تحديد NORID على إدراج، أو إذا كان لدى ROWID المحدد قيمة فارغة، فسيتم إنشاء ROWID المناسب تلقائيا. الخوارزمية المعتادة هي إعطاء الصف الذي تم إنشاؤه حديثا ROWID وهو واحد أكبر من أكبر ORID في الجدول قبل الإدراج. إذا كان الجدول فارغا في البداية، فسيتم استخدام روضة من 1. إذا كان أكبر Rowid يساوي أكبر عدد صحيح ممكن (9223372036854775807) ثم يبدأ تشغيل محرك قاعدة البيانات في اختيار رواتب مرشحة إيجابية بشكل عشوائي حتى يجد أي منها غير مستخدم سابقا. إذا لم يتم العثور على تجويف غير مستخدم بعد عددا معقولا من المحاولات، فافشل عملية الإدراج مع خطأ SQLite_Full. إذا لم يتم إدراج أي قيم صيحة سلبية بشكل صريح، فستكون القيم المجمعة تلقائيا أكبر من الصفر.

خوارزمية اختيار روضة عادية الموصوفة أعلاه ستولد روايات فريدة من نوعها رائعة طالما أنك لا تستخدم أبدا الحد الأقصى للقيمة المجانية وأنت لا تحذف الإدخال في الجدول بأكبر ORID. إذا قمت بحذف الصفوف من أي وقت مضى أو إذا قمت بإنشاء صف واحد بأقصى قدر ممكن من الصفود الممكن، فقد يتم إعادة استخدام ORWIDs من الصفوف المحذوفة مسبقا عند إنشاء صفوف جديدة و Rowids المنشأة حديثا قد لا تكون في ترتيب تصاعدي بدقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top