DROP PROCEDURE IF EXISTS update_migration;
DELIMITER //
CREATE PROCEDURE update_migration ()
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = `bid_log` AND COLUMN_NAME = `Paid` ) THEN
ALTER TABLE `bid_log` ADD `Paid` INT NULL;
END IF;
END //
DELIMITER ;
我使用模式表中的SELECT 1来检查列是否存在,但是如果列不存在,我会收到此错误:
ERROR 1054 (42S22) at line 1: Unknown column 'bid_log' in 'where clause'
如何在没有mysql的情况下检查现有列是否因为在我的选择查询中缺少值而引发错误?
答案 0 :(得分:0)
SELECT 1 FROM information_schema.columns WHERE table_name = 'bid_log' AND COLUMN_NAME = 'Paid'
在架构表中,table_name和col_name存储为字符串值,因此必须将它们与字符串标识符而不是对象标识符进行比较。
感谢underscore_d的回答