【问题标题】:How to add if statements in MySQL alter command? [duplicate]如何在 MySQL alter 命令中添加 if 语句? [复制]
【发布时间】:2019-03-16 05:26:15
【问题描述】:

我有一张桌子:

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 TABLE application MODIFY COLUMN `appid` int(11) NOT NULL
AUTO_INCREMENT PRIMARY KEY;

当我在单独的 bat 文件中运行这 2 个命令时,第二次出现错误,因为 appid PK 已经存在。如果 Alter 命令不存在,或者截断所有索引,如何使其重新创建?

【问题讨论】:

  • 可以创建存储过程

标签: mysql


【解决方案1】:

基于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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 2010-12-06
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多