Проверка на существование добавляемого в таблицу поля в MySQL

19.04.2010 23:20 / Артём Волк / 1890 просмотров / ...

Для программы обновления понадобилось написать 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;