首页 > 解决方案 > 从 MySQL 中数据库的多个表中删除主键的脚本

问题描述

我的数据库中有很多表,每个表都有主键、唯一键和自动增量。我想删除所有这三个。我如何在脚本中执行此操作,而无需为数据库中的每个表手动执行。是否有任何自动化脚本可以一次将所有这些内容删除到数据库的所有表中。

(来自评论)

CREATE TABLE emp3 (
    id int NOT NULL, 
    name varchar(30) DEFAULT NULL, 
    PRIMARY KEY (id), 
    UNIQUE KEY c_unique (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

标签: mysqldatabasedatabase-designprimary-key

解决方案


如果你正在使用ENGINE=InnoDB,那么你真的需要PRIMARY KEY在每张桌子上都有一个。

如果您JOINs在表之间有,则需要避免删除您所在的列JOINing

PK、唯一键和 AI 列在表中的命名是否一致?

请向我们展示一个示例SHOW CREATE TABLE,以便我们根据您的需求量身定制答案。

答案将包括类似

SELECT
    CONCAT("ALTER TABLE ", table_name, "... ;")
    FROM information_schema
    WHERE table_schema = 'db_name';

加上有关如何使用“mysql”命令行工具或存储过程来执行创建的命令的说明。


推荐阅读