totn Oracle Error Messages

Oracle / PLSQL: ORA-01439 Error Message

Learn the cause and how to resolve the ORA-01439 error message in Oracle.

Description

When you encounter an ORA-01439 error, the following error message will appear:

  • ORA-01439: column to be modified must be empty to change datatype

Cause

You tried to execute a ALTER TABLE MODIFY statement to change the datatype of a column, but the column contained data. You can only modify the datatype of a column whose values are all NULL.

Resolution

The option(s) to resolve this Oracle error are:

Option #1

Execute an UPDATE statement to change all values in that column to NULL.

Option #2

Execute a DELETE statement to remove all rows from the table.

For example, if you had a table called suppliers defined as follows:

CREATE TABLE suppliers
( supplier_id number(5),
  supplier_name varchar2(50)
);

Then executed an INSERT statement as follows:

INSERT into suppliers
(supplier_id, supplier_name)
VALUES (12345, 'IBM');

And you tried to execute the following ALTER TABLE statement:

ALTER TABLE suppliers
 MODIFY supplier_id varchar2(5);

You would receive the following error message:

Oracle PLSQL

You could correct the error with either of the following solutions:

Solution #1

You can update the supplier_id column to all NULLs. This only works if the supplier_id field will accept NULL values.

UPDATE suppliers
SET supplier_id = NULL;
Solution #2

You can remove all entries from the suppliers table.

DELETE FROM suppliers;

If you do decide to delete all entries from your suppliers table, you might want to make sure that you have a backup of the data.