Sometimes we need to drop column from a database, developers write script to drop the column by following:
But if the column is already dropped from the database it will through a
error as the column is no longer exist. We want to do is to drop a
table or column, but only if it exists
Unfortunately there is an IF EXISTS clause for CREATE TABLE in MySQL but no one for ALTER TABLE ADD/DROP COLUMN.ALTER TABLE <table>DROP COLUMN <column>
DROP TABLE IF EXISTS <table>;
CREATE TABLE <table>
Solution : Creating following temporary stored procedure would resolve the problem in MySQL 5+: delimiter //
CREATE PROCEDURE drop_column_sp() BEGIN
IF EXISTS(
SELECT * FROM information_schema.COLUMNS
WHERE table_name = '<table>' AND column_name = '<column>'
and table_schema ='<schema>'
)
THEN
ALTER TABLE <table> DROP COLUMN <column>;
END IF;
END;
//
delimiter ';'
CALL drop_column_sp();
DROP PROCEDURE drop_column_sp;