AzLearn

Migrations

Migrations

مفهوم ~20 دقيقة

Migrations

Migration هي تغيير موثق في schema أو البيانات. بدلاً من تعديل قاعدة البيانات يدوياً ثم نسيان ما حدث، تكتب ملفاً يصف التغيير. هذا يسمح بالمراجعة، التشغيل المتكرر، والرجوع عند الحاجة.

في SQLite، انتبه لقيود ALTER TABLE. ولا تستخدم أنماطاً خطرة مثل إضافة عمود NOT NULL بلا default مناسب على جدول فيه بيانات. في قواعد الإنتاج، كل migration تحتاج خطة: ما التغيير؟ هل هو آمن؟ هل يحتاج backfill؟ هل يوجد rollback؟

مثال بسيط

query.sql

إضافة عمود 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:

query.sql

هذا الإجراء ذري (داخل معاملة) وآمن. لا تُنفذه خارج معاملة.

تحدي — Challenge