Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

check if column exists before ALTER TABLE -- mysql

Tags:

Is there a way to check if a column exists in a mySQL DB prior to (or as) the ALTER TABLE ADD coumn_name statement runs? Sort of an IF column DOES NOT EXIST ALTER TABLE thing.

I've tried ALTER IGNORE TABLE my_table ADD my_column but this still throws the error if the column I'm adding already exists.

EDIT: use case is to upgrade a table in an already installed web app-- so to keep things simple, I want to make sure the columns I need exist, and if they don't, add them using ALTER TABLE

like image 454
julio Avatar asked Nov 21 '11 22:11

julio


People also ask

How do you check if a column exists in a table MySQL?

Find if the column exists using the SQL below: SELECT column_name FROM INFORMATION_SCHEMA . COLUMNS WHERE TABLE_SCHEMA =[Database Name] AND TABLE_NAME =[Table Name]; If the above query returns a result then it means the column exists, otherwise you can go ahead and create the column.

Does MySQL have exists?

The EXISTS operator in MySQL is a type of Boolean operator which returns the true or false result. It is used in combination with a subquery and checks the existence of data in a subquery. It means if a subquery returns any record, this operator returns true.


1 Answers

Since mysql control statements (e.g. "IF") only work in stored procedures, a temporary one can be created and executed:

DROP PROCEDURE IF EXISTS add_version_to_actor;  DELIMITER $$  CREATE DEFINER=CURRENT_USER PROCEDURE add_version_to_actor ( )  BEGIN DECLARE colName TEXT; SELECT column_name INTO colName FROM information_schema.columns  WHERE table_schema = 'connjur'     AND table_name = 'actor' AND column_name = 'version';  IF colName is null THEN      ALTER TABLE  actor ADD  version TINYINT NOT NULL DEFAULT  '1' COMMENT  'code version of actor when stored'; END IF;  END$$  DELIMITER ;  CALL add_version_to_actor;  DROP PROCEDURE add_version_to_actor; 
like image 179
gerardw Avatar answered Sep 20 '22 13:09

gerardw