Adsense Ad

Wednesday, 24 May 2017

Oracle: ORA-01439 Error Message

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.

No comments: