编辑 | blame | 历史 | 原始文档

SQL 语法规范

规则

  • MySQL ALTER TABLE ADD COLUMN 不支持 IF NOT EXISTS 语法,即使 MySQL 8.0+ 也不支持。
  • 添加字段前需要先检查字段是否存在,或直接执行并忽略"字段已存在"错误。

正确示例

-- 正确:直接添加字段
ALTER TABLE mes_wm_sn ADD COLUMN uuid VARCHAR(64) COMMENT '批次UUID' AFTER id;

-- 正确:先检查再添加(兼容脚本)
SET @exists = (SELECT COUNT(*) FROM information_schema.columns 
               WHERE table_schema = DATABASE() AND table_name = 'mes_wm_sn' AND column_name = 'uuid');
SET @sql = IF(@exists = 0, 
              'ALTER TABLE mes_wm_sn ADD COLUMN uuid VARCHAR(64) COMMENT ''批次UUID'' AFTER id', 
              'SELECT 1');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

错误示例

-- 错误:ADD COLUMN 不支持 IF NOT EXISTS
ALTER TABLE mes_wm_sn ADD COLUMN IF NOT EXISTS uuid VARCHAR(64) COMMENT '批次UUID' AFTER id;

IF NOT EXISTS 支持场景

语句 是否支持
CREATE TABLE IF NOT EXISTS ✅ 支持
CREATE INDEX IF NOT EXISTS ✅ 支持(MySQL 8.0+)
ALTER TABLE ADD COLUMN IF NOT EXISTS ❌ 不支持
ALTER TABLE ADD INDEX IF NOT EXISTS ✅ 支持(MySQL 8.0+)
ALTER TABLE ADD CONSTRAINT IF NOT EXISTS ❌ 不支持