Обновите таблицу базы данных, чтобы добавить новый столбец - PullRequest
0 голосов
/ 29 мая 2009

Мне нужно преобразовать существующую таблицу БД в новую таблицу БД, которая добавляет новый столбец. У меня есть следующий код SQL, который устанавливает значение по умолчанию для этого столбца -1.

// Insert new column for holding appWidgetIds
db.execSQL("ALTER TABLE favorites " +
   "ADD COLUMN appWidgetId INTEGER NOT NULL DEFAULT -1;");

Но как я могу установить значение по умолчанию для столбца с приращением по одному для каждой строки?

Ответы [ 3 ]

3 голосов
/ 29 мая 2009

Это зависит от вашей СУБД. MySQL использует AUTO_INCREMENT:

ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER
  NOT NULL DEFAULT -1 AUTO_INCREMENT

PostgreSQL использует CREATE SEQUENCE:

CREATE SEQUENCE favorites_seq;
ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER
  NOT NULL DEFAULT -1 nextval('favorites_seq')

SQL Server использует IDENTITY:

ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER
  IDENTITY(1,1) NOT NULL DEFAULT -1

В качестве примечания, я не знаю, почему вы устанавливаете по умолчанию значение -1. Зачем вам подписывать целые числа, если они всегда будут положительными? Вы должны сделать по умолчанию 0 для эффективности.

1 голос
/ 29 мая 2009

Это зависит от того, какую СУБД вы используете. Для MySQL вы можете использовать:

ALTER TABLE x ADD COLUMN y INTEGER NOT NULL DEFAULT -1 AUTO_INCREMENT

См. http://dev.mysql.com/doc/refman/5.0/en/alter-table.html

0 голосов
/ 29 мая 2009

Значения автоматически увеличиваются для новых строк ПОСЛЕ вашего преобразования? Если нет, вы можете сделать 3 шага:

  1. ИЗМЕНИТЬ таблицу со столбцом NULLable
  2. ОБНОВИТЬ новый столбец с любыми правилами
  3. Снова измените ALTER для установки NOT NULL.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...