sqlite. كيفية الحصول على قيمة مفتاح الزيادة التلقائية بعد الإدراج ، بخلاف Last_Insert_Rowid ()؟

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

  •  27-09-2019
  •  | 
  •  

سؤال

أنا أستخدم SQLite3 مع Flask microframework ، لكن هذا السؤال يتعلق فقط بجانب SQLite من الأشياء ..

فيما يلي مقتطف من الكود:

g.db.execute('INSERT INTO downloads (name, owner, mimetype) VALUES (?, ?, ?)', [name, owner, mimetype])
file_entry = query_db('SELECT last_insert_rowid()')
g.db.commit()

ال downloads يحتوي الجدول على عمود آخر مع السمات التالية: id integer primary key autoincrement,

إذا كتب شخصان في نفس الوقت ، يمكن أن ينتج الرمز أعلاه أخطاء.

المعاملات يمكن أن تكون فوضوي. في SQLite هل هناك طريقة رائعة لإعادة المفتاح الأساسي الذي تم إنشاؤه بعد القيام بإدراج؟

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

المحلول

الطريقة التي تفعلها هي صالحة. لن تكون هناك مشكلة إذا تم تنفيذ ما ورد أعلاه بشكل متزامن بواسطة نصين. last_insert_rowid() إرجاع ROWID من أحدث عبارة إدراج للاتصال الذي يطلق عليه. يمكنك أيضًا الحصول على RowID من خلال العمل g.db.lastrowid.

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