Как изменить тип данных столбца для базы данных derby? - PullRequest
17 голосов
/ 05 марта 2010

Я пытаюсь изменить тип данных для столбца derby db. Текущий столбец цены установлен как DECIMAL (5,0). Я хотел бы изменить его на DECIMAL (7,2). Я сделал это:

alter table item alter column price set data type DECIMAL(7,2);

Но это не сработало и показывает ошибку:

Error: Only columns of type VARCHAR may have their length altered. 

Могу ли я узнать, как это можно изменить? Спасибо.

Ответы [ 5 ]

25 голосов
/ 18 ноября 2010

Вот сценарий Derby SQL для изменения столбца MY_TABLE.MY_COLUMN с BLOB (255) на BLOB (2147483647):

ALTER TABLE MY_TABLE ADD COLUMN NEW_COLUMN BLOB(2147483647);
UPDATE MY_TABLE SET NEW_COLUMN=MY_COLUMN;
ALTER TABLE MY_TABLE DROP COLUMN MY_COLUMN;
RENAME COLUMN MY_TABLE.NEW_COLUMN TO MY_COLUMN;
5 голосов
/ 09 августа 2015

Я думаю, вы можете сделать так:

ALTER TABLE SCHEMA.TABLE ALTER "COLUMN-NAME" SET DATA TYPE VARCHAR(255);

(column-Name SET DATA TYPE VARCHAR(integer)) для строки типа данных в качестве примера ...

3 голосов
/ 05 марта 2010

Вот немного более сложный способ изменить тип данных столбца следующим образом:

  1. Добавить новый столбец с нужным типом данных
  2. Ошибка "update ... set new-column = old-column" для копирования данных из старого столбца в новый столбец
  3. отбросить старую колонку
  4. Переименуйте новый столбец, чтобы получить имя старого столбца.

Чуть больше шагов, но в итоге эффект будет таким же.

Если у вас возникли проблемы при разработке точных деталей SQL для этого, сообщите нам, и мы поможем.

1 голос
/ 20 октября 2016

Вы можете изменить таблицу следующим образом:

ALTER TABLE [table] ALTER COLUMN [column] SET DATA TYPE [type];

Или в Rails, просто используйте:

change_column :table_name, :column_name, :integer
0 голосов
/ 05 марта 2010

Posgtes Solution:

ALTER TABLE values_table ALTER price_column ТИП десятичный (7,2)

...