sqlite. كيفية الحصول على قيمة مفتاح الزيادة التلقائية بعد الإدراج ، بخلاف Last_Insert_Rowid ()؟
سؤال
أنا أستخدم 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
.
لا تنتمي إلى StackOverflow