如何在MySQL alter命令中添加if语句?

时间:2018-10-11 07:42:01

标签: mysql

我有一张桌子:

CREATE TABLE IF NOT EXISTS `application` (
`appid` int(11) NOT NULL,
`appcode` varchar(250) NOT NULL,
`parentid` int(11) DEFAULT NULL,
`appname` varchar(250) NOT NULL,
`appcat` varchar(150) NOT NULL,
`appsubcat` varchar(150) NOT NULL,
`appdesc` varchar(250) NOT NULL,
`active` char(1) NOT NULL DEFAULT 'Y'   
);
TRUNCATE TABLE  ivumetastore.application;

添加alter命令:

ALTER TABLE application MODIFY COLUMN `appid` int(11) NOT NULL
AUTO_INCREMENT PRIMARY KEY;

由于我在单独的bat文件中运行这两个命令,因此第二次出现错误,因为已经存在appid PK。如果对Alter命令不存在,该怎么办?或者截断所有索引,以便重新创建它?

1 个答案:

答案 0 :(得分:0)

基于this SO question,我们可以尝试通过存储过程执行以下操作:

IF NOT EXISTS (
    SELECT 1
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE
        TABLE_SCHEMA = 'your_db_name' AND
        TABLE_NAME = 'application'    AND
        CONSTRAINT_NAME = 'PRIMARY') THEN

    ALTER TABLE application
    MODIFY COLUMN `appid` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY;

END IF;