有人知道如何在sybaseIQ中修改列的数据类型吗?
例如,我有一个表:"MY_TABLE“,状态是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 有什么想法?
发布于 2013-07-20 22:59:58
正如错误消息所述,不支持在IQ中修改列数据类型。您需要添加一个约束,或者添加一个新列,复制数据,然后删除旧列。
您可以修改列的可空性,但不能修改基础数据类型。
发布于 2019-04-26 09:54:04
请参见下面与此命令等效的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;https://stackoverflow.com/questions/17753584
复制相似问题