批量给数据库表ID字段加上PK约束

文章目录

  • 前言
  • 步骤
    • 1.拼接执行sql
    • 2.编写存储过程
    • 3.执行存储过程
  • 总结


前言

批量给数据库表ID字段加上PK约束

步骤

1.拼接执行sql

SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' ADD PRIMARY KEY (id);') AS update_sql
FROM (
    SELECT
    T.TABLE_SCHEMA,
    T.TABLE_NAME,
    T.ENGINE,
    T.CREATE_TIME,
    T.UPDATE_TIME,
    IF(EXISTS (
        SELECT *
        FROM information_schema.COLUMNS C
        WHERE C.TABLE_SCHEMA = T.TABLE_SCHEMA
            AND C.TABLE_NAME = T.TABLE_NAME
            AND C.COLUMN_NAME = 'id' -- id字段
            AND C.COLUMN_KEY = 'PRI'
        ),
        'YES',
        'NO'
    ) AS HAS_PK
FROM information_schema.TABLES T
WHERE T.TABLE_SCHEMA = '数据库名称' AND T.TABLE_TYPE = 'BASE TABLE'
) t
WHERE HAS_PK = 'NO'

执行结果

批量给数据库表ID字段加上PK约束_第1张图片


2.编写存储过程

把第一步生成的执行sql变成成存储过程,忽略中途发生错误

DELIMITER $$
CREATE PROCEDURE execute_sql_statements () BEGIN
	DECLARE
	CONTINUE HANDLER FOR SQLEXCEPTION BEGIN	
		END;
	ALTER TABLE 数据库名.tabel名 ADD PRIMARY KEY ( id );
	ALTER TABLE 数据库名.tabel名 ADD PRIMARY KEY ( id );
END $$DELIMITER;

执行结果

在这里插入图片描述


3.执行存储过程

CALL execute_sql_statements();

执行结果

批量给数据库表ID字段加上PK约束_第2张图片
效果
在这里插入图片描述


总结

使用上述方式可以快速批量给表字段添加上主键约束

你可能感兴趣的:(mysql,数据库,mysql)