سؤال

كيف أضيف عمود إضافي إلى جدول قاعدة بيانات SQLite 2 موجود يحتوي على بيانات وفهارس مرتبطة به.

يبدو أن جدول ALTER TABLE SQL غير متوفر في SQLITE2؟

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

المحلول

من sqlite التعليمات:

يحتوي SQLite على دعم طاولة تغيير محدود يمكنك استخدامه لإضافة عمود إلى نهاية الجدول أو تغيير اسم الجدول. إذا كنت ترغب في إجراء تغييرات أكثر تعقيدا في بنية جدول، فسيتعين عليك إعادة إنشاء الجدول. يمكنك حفظ البيانات الموجودة إلى جدول مؤقت، وإسقاط الجدول القديم، وإنشاء الجدول الجديد، ثم انسخ البيانات مرة أخرى من الجدول المؤقت.

على سبيل المثال، افترض أن لديك جدول يدعى "T1" مع أسماء الأعمدة "A"، "B"، و "C" وتريد حذف العمود "C" من هذا الجدول. الخطوات التالية توضح كيف يمكن القيام بذلك:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;

نصائح أخرى

قد لا يكون - sqlite3 كان خارج لفترة من الوقت. سيكون عليك إنشاء DB DB آخر مع الجدول بالطريقة التي تريدها ونسخ البيانات إليها. أو إنشاء جدول جديد، انسخ البيانات، وإسقاط الأصلي واستبداله مع واحد جديد.

لا تنس أن إسقاط الجدول يسقط أيضا مشغلات مرتبطة أيضا.

قبل أن تقوم بتعديل الجدول، استخدم الأمر

. scheme table_to_modify.

سوف تفريغ كل البيانات الحالية التي سيتم إسقاطها بما في ذلك المشغلات التي تحتاج إلى إعادة إنشاءها.

هتافات،

elixon.

أنت لا تفعل ذلك. لا يتم دعم التعديل غير التافهة للجداول. ما ستحتاج إليه هو:

  1. نسخ البيانات إلى جدول TEMP يسقط القديم
  2. إنشاء الجدول الجديد
  3. نسخ البيانات من الجدول الأصلي الخاص بك إليها
  4. إنشاء الجدول الجديد
  5. انسخ البيانات من TEMP إلى الجدول الجديد
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top