有谁知道如何在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
想法?
答案 0 :(得分:2)
如错误消息所述,不支持修改IQ中的列数据类型。您需要添加约束,或添加新列,复制数据并删除旧列。
您可以修改列的可空性,而不是基础数据类型。
答案 1 :(得分:0)
请参阅下面与该命令等效的SAP IQ 16, 一旦列中有数据,则不允许使用该值:
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;