На основе комментариев, опубликованных по вашему вопросу, приведен фрагмент кода, который должен ответить на ваши вопросы. Он работает, сначала проверяя, существует ли столбец в INFORMATION_SCHEMA
, а затем динамически формируя подготовленный, а затем выполняемый SQL-запрос. Если столбец не существует, вместо UPDATE
выполняется фиктивный запрос. Я проверил это в этой базе данных fiddlde .
SET @dbname = DATABASE();
SET @tablename = "my_table";
SET @columnname = "my_column";
-- check if the column exists
SELECT COUNT(*) INTO @cnt
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
(table_name = @tablename)
AND (table_schema = @dbname)
AND (column_name = @columnname)
;
-- build a dynamic SQL statement
SET @preparedStatement = (SELECT IF(
@cnt > 0,
CONCAT("UPDATE ", @tablename, " SET ", @columnname, " = '' WHERE my_code = 21;"),
"SELECT 1"
));
-- run the statement
PREPARE updateIfExists FROM @preparedStatement;
EXECUTE updateIfExists;
DEALLOCATE PREPARE updateIfExists;