Migrations
Migrations
Migrations
Migration هي تغيير موثق في schema أو البيانات. بدلاً من تعديل قاعدة البيانات يدوياً ثم نسيان ما حدث، تكتب ملفاً يصف التغيير. هذا يسمح بالمراجعة، التشغيل المتكرر، والرجوع عند الحاجة.
في SQLite، انتبه لقيود ALTER TABLE. ولا تستخدم أنماطاً خطرة مثل إضافة عمود NOT NULL بلا default مناسب على جدول فيه بيانات. في قواعد الإنتاج، كل migration تحتاج خطة: ما التغيير؟ هل هو آمن؟ هل يحتاج backfill؟ هل يوجد rollback؟
مثال بسيط
إضافة عمود nullable أسهل من إضافة قيد صارم. القيود تحتاج تخطيطاً.
قيود ALTER TABLE في SQLite
SQLite محدودة في ما تدعمه من ALTER TABLE مقارنةً بـPostgreSQL أو MySQL:
| العملية | دعم SQLite |
|---|---|
| إضافة عمود nullable | مدعوم دائماً |
| إعادة تسمية عمود | SQLite 3.25+ (2018) فقط |
| حذف عمود | SQLite 3.35+ (2021) فقط |
| تغيير نوع العمود | غير مدعوم — يحتاج إعادة بناء |
| إضافة قيد NOT NULL بلا DEFAULT | غير مدعوم — يحتاج إعادة بناء |
| إعادة ترتيب الأعمدة | غير مدعوم — يحتاج إعادة بناء |
الإجراء الكنسي 12-step لتغيير الـ Schema
عندما تحتاج تغييراً لا يدعمه ALTER TABLE مباشرةً، اتبع الإجراء الرسمي الموثق في https://www.sqlite.org/lang_altertable.html — يُعرف بـ12-step:
هذا الإجراء ذري (داخل معاملة) وآمن. لا تُنفذه خارج معاملة.