تعطيل إعادة استخدام السجلات المحذوفة في الخلية

StackOverflow https://stackoverflow.com/questions/1058291

  •  21-08-2019
  •  | 
  •  

سؤال

لدي تطبيق ويب حيث التفاعل مع قاعدة بيانات MySql.عند حذف سجل ، يبدو أن فتحة يتم استخدامها في المرة القادمة أنا إنشاء سجل جديد.حيث يحتوي كل سجل متتابعة الابتدائي مفتاح السجل التالي سوف يكون مفتاح جديد يقول 5 ، ولكن السجل الجديد سيتم وضعها في الماضي أفرغت الفور ، أقول حيث سجل عدد 2 اعتادت أن تكون.هل هناك طريقة لجعل سجلات جديدة تضاف مباشرة في الجزء السفلي من القائمة ؟ هل هناك طريقة للقيام بذلك مع MySQL Query Browser ربما ؟

هذا هو مثال على ما أصفه:

1 userName1 password1
2 userName2 password2 --> next operation will delete this record
3 userName3 password3
4 userName4 password4

عندما سجل #2 ذهب في المرة القادمة سأفعل جديد إضافة سجل #5 يأخذ رقم 2 بقعة:

1 userName1 password1
5 userName5 password5
3 userName3 password3
4 userName4 password4

هل هناك وسيلة الموصى بها لإرشاد الخلية (ربما في إنشاء جدول) أن سجلات جديدة أن فقط تم إضافة في الجزء السفلي من القائمة ؟ لذا نود أن تعطيل التلقائي تسجيل-إعادة استخدامها.

شكرا مقدما على مساعدتكم مع أطيب التحيات

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

المحلول

ببساطة إضافة

ORDER BY id

إلى نهاية الاستعلام الخاص بك (حيث "id" هو 1, 2, 3, 4, 5 عمود في الجدول الخاص بك)

نصائح أخرى

ويمكنك إنشاء "على إدراج" الزناد الذي يستخدم تسلسل لتعيين معرف (كتابة من الذاكرة وفقا لأوراكل، لذلك سيكون لديك لمعرفة ما اذا كان يختلف في الخلية):

create sequence table_name_id_seq order nocache cycle maxvalue 99999999;

create or replace trigger table_name_id
before insert on table_name for each row
begin
  select table_name_id_seq.nextval
    into :new.id
    from dual
  ;
end;

ك InnoDB سوف تتعامل مع ذلك لك على بعض المستويات. جميع الجداول ك InnoDB شكل ما من أشكال المفتاح الأساسي الذي هو عنقودية، وتلك هي عادة الإعداد للتعامل مع إدراج بالتتابع.

إذا كنت منعت من استخدام ك InnoDB، وأعتقد أنك سوف تضطر إلى اللجوء إلى تغيير الشفرة المصدرية للتكيف مع الطريقة التي يعمل MYISAM. أنا لست على دراية خاصة مع أي مشغل التخزين "طبيعية" أخرى عن الخلية، لذلك لست متأكدا إذا كان هناك بديل آخر.

وأن خلق حقل تاريخ (DATE_ADDED) وORDER BY DATE_ADDED يكون من الأفضل

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