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
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.
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.
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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With