Jackson Ha
Jackson Ha

Reputation: 682

how to modify a column's datatype in sybaseIQ

Does anyone know how to modify a column's datatype in sybaseIQ?

ie i have table: "MY_TABLE" with col STATUS varchar(100) i want to change it to varchar(10)

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

I have tried, the above, but it doesn't seem to be working.......

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

thoughts?

Upvotes: 0

Views: 11887

Answers (2)

user11413536
user11413536

Reputation: 11

See below the SAP IQ 16 equivalent of this command, which is NOT ALLOWED once the column has data:

Not allowed: 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;

Upvotes: 0

Hotel
Hotel

Reputation: 1371

As the error message states, modifying a columns data type in IQ is not supported. You would need to add a constraint, or add a new column, copy the data, and drop the old column.

You are able to modify the columns nullability, just not the underlying data type.

Upvotes: 2

Related Questions