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 |
❌ 不支持 |