Проверка на существование добавляемого в таблицу поля в MySQL
Для программы обновления понадобилось написать SQL-скрипт, который проверял бы перед добавлением нового поля в таблицу, не было ли такое поле добавлено ранее. В MySQL для подобных целей необходимо использовать хранимую процедуру, которая после использования удаляется. Оригинал решения дополнен автоматическим определением названия текущей БД.
Вариант решения:
DELIMITER // CREATE PROCEDURE `temp_sp` () BEGIN SET @database = DATABASE(); IF NOT EXISTS( SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAME='some_setting_name' AND TABLE_NAME='settings' AND TABLE_SCHEMA=@database ) THEN ALTER TABLE `settings` ADD `some_setting_name` DOUBLE NOT NULL DEFAULT '15.00' AFTER `another_setting`; END IF; END// DELIMITER ; CALL temp_sp(); DROP PROCEDURE temp_sp;
