# SQL 语法规范 ## 规则 - MySQL `ALTER TABLE ADD COLUMN` 不支持 `IF NOT EXISTS` 语法,即使 MySQL 8.0+ 也不支持。 - 添加字段前需要先检查字段是否存在,或直接执行并忽略"字段已存在"错误。 ## 正确示例 ```sql -- 正确:直接添加字段 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; ``` ## 错误示例 ```sql -- 错误: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 | ❌ 不支持 |