19

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. 

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

4

5 に答える 5

29

列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;
于 2010-11-18T14:36:09.003 に答える
8

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

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

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

于 2015-08-09T08:42:39.200 に答える
3

この方法で列のデータ型を変更する少し複雑な方法は次のとおりです。

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

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

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

于 2010-03-05T15:23:37.570 に答える
3

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

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

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

change_column :table_name, :column_name, :integer
于 2016-10-20T11:50:24.717 に答える
-3

Posgtesソリューション:

ALTER TABLE price_table ALTER price_column TYPE 10進数(7,2)

于 2010-03-05T06:50:01.663 に答える