Nếu máy chủ của bạn không cấp cho bạn quyền tạo hoặc chạy các thủ tục, tôi nghĩ rằng tôi đã tìm thấy một cách khác để thực hiện việc này bằng cách sử dụng PREPARE / EXECUTE và truy vấn lược đồ:
SET @s = (SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_name'
AND table_schema = DATABASE()
AND column_name = 'col_name'
) > 0,
"SELECT 1",
"ALTER TABLE table_name ADD col_name VARCHAR(100)"
));
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;