仅当列(仅使用SQL)不存在时,才将列添加到MySQL(而不是MariaDB)表

时间:2016-05-07 05:53:58

标签: mysql alter-table

我已阅读this question及解决方案,但它们或多或少不适用于我的情况。我只有SQL选项,应该避免使用PROCEDURE,我们可能没有所需的权限。

这是一个创建缺少的表,列和索引等的SQL脚本(架构更新)

我在MariaDB中看到我们可以使用IF NOT EXISTS子句,但这在MySQL中不可用。 MySQL中是否有类似的方法或解决方法?

1 个答案:

答案 0 :(得分:0)

在SET语句中使用IF()来为我提供逻辑:

SET @s = (SELECT IF(
    (SELECT COUNT(1)
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE table_name = 'your_table'
        AND table_schema = 'your_schema'
        AND column_name = 'column_name'
    ) > 0,
    "SELECT 1",
    "ALTER TABLE your_table ADD column_name VARCHAR(100)"
));

PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;