0

sybaseIQ で列のデータ型を変更する方法を知っている人はいますか?

つまり、私はテーブルを持っています: "MY_TABLE" with col STATUS varchar(100) 私はそれを varchar(10) に変更したいです

alter table "MY_TABLE" 
    modify "STATUS" varchar(10)

上記を試してみましたが、うまくいかないようです.......

    Error: SQL Anywhere Error -1013024: ALTER TABLE MODIFY <column> <datatype> is not supported.
-- (db_alter.cxx 438) SQLState:  QCA24 ErrorCode: 21 

考え?

4

2 に答える 2

2

エラー メッセージに示されているように、IQ で列のデータ型を変更することはサポートされていません。制約を追加するか、新しい列を追加してデータをコピーし、古い列を削除する必要があります。

基になるデータ型だけでなく、列の null 可能性を変更できます。

于 2013-07-20T14:59:57.680 に答える
0

このコマンドに相当する SAP IQ 16 を以下に示します。列にデータが含まれると、このコマンドは許可されません。

許可されていません: ALTER TABLE MyTableName Modify MyExistingColumnName bigint null;

ALTER TABLE MyTableName ADD    MyExistingColumnName_xxxNEWxxx    bigint null;

UPDATE      MyTableName SET    MyExistingColumnName_xxxNEWxxx =  MyExistingColumnName;

--QA
   select count(1) "QA_RESULT"
   from MyTableName 
   Where MyExistingColumnName_xxxNEWxxx != MyExistingColumnName;

--CRITICAL: QA_RESULT MUST BE 0

--ONLY If QA_RESULT IS 0 
  ALTER TABLE MyTableName DROP   MyExistingColumnName;

  ALTER TABLE MyTableName RENAME MyExistingColumnName_xxxNEWxxx To MyExistingColumnName;

--FINAL QA
    select top 100 * 
    from MyTableName 
    where MyExistingColumnName IS NOT NULL;
----
commit;
于 2019-04-26T01:54:04.017 に答える