web-dev-qa-db-ja.com

derbyデータベースの列データ型を変更するにはどうすればよいですか?

Derbydb列のデータ型を変更しようとしています。現在の価格列は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. 

どうすれば変更できるのでしょうか?ありがとうございました。

18
jl.

列MY_TABLE.MY_COLUMNをBLOB(255)からBLOB(2147483647)に変更するDerbySQLスクリプトは次のとおりです。

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;

私はあなたがこのようにできると思います:

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

(column-Name SET DATA TYPE VARCHAR(integer))例としてのデータ型文字列...

6
jr1964

この方法で列のデータ型を変更するには、もう少し複雑な方法があります。

  1. 目的のデータ型の新しい列を追加します
  2. 「update ... set new-column = old-column」を発行して、古い列から新しい列にデータをコピーします
  3. 古い列を削除します
  4. 新しい列の名前を古い列の名前に変更します。

少し多くのステップがありますが、最終的には効果は同じになります。

これを行うためにSQLの正確な詳細を理解するのに問題がある場合は、お知らせください。サポートさせていただきます。

3
Bryan Pendleton

次のようにテーブルを変更できます。

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

または、Railsで、次を使用します。

change_column :table_name, :column_name, :integer
1
Aleks