回答来自于微信公众号:一休哥助手
在MySQL中,IF NOT EXISTS
不能直接用在ALTER TABLE
语句中。但您可以通过存储过程来实现这个功能。下面是一个简洁的方法,使用存储过程来检查并添加列:
DELIMITER //
CREATE PROCEDURE AddColumnIfNotExists()
BEGIN
IF NOT EXISTS(
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'Student'
AND COLUMN_NAME = 'mobile'
) THEN
ALTER TABLE Student ADD COLUMN mobile22 VARCHAR(50) DEFAULT NULL;
END IF;
END //
DELIMITER ;
CALL AddColumnIfNotExists();
这里,我们创建了一个名为AddColumnIfNotExists
的存储过程,该过程首先检查Student
表是否存在名为mobile
的列。如果不存在,则使用ALTER TABLE
语句添加名为mobile22
的列。
最后,我们通过CALL
语句调用这个存储过程。这样就可以确保列不存在时才添加它,而不会出错。