0

有谁知道如何在 sybaseIQ 中修改列的数据类型?

即我有表:“MY_TABLE”与 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 中修改列数据类型。您需要添加一个约束,或者添加一个新列,复制数据,然后删除旧列。

您可以修改列的可空性,而不是基础数据类型。

于 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 回答