Mysql存储过程 为指定库所有表加统一字段
2023-12-26 10:55:54
DELIMITER //
CREATE PROCEDURE add_brand_column()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE table_name VARCHAR(255);
DECLARE alter_query VARCHAR(1000);
DECLARE cur CURSOR FOR
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'test_db';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO table_name;
IF done THEN
LEAVE read_loop;
END IF;
-- Check if column already exists in the table
IF NOT EXISTS (
SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'test_db'
AND table_name = table_name
AND column_name = 'brand'
) THEN
-- Add the column to the table
SET alter_query = CONCAT('ALTER TABLE ', table_name, ' ADD COLUMN brand VARCHAR(100)');
-- Using PREPARE and EXECUTE for dynamic SQL
PREPARE stmt FROM alter_query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
此存储过程执行以下步骤:
使用游标遍历数据库中的所有表。
对于每个表,检查是否存在名为 brand 的列。
如果不存在,使用动态 SQL 添加 brand 列,类型为 VARCHAR(100)。
CALL add_brand_column();
文章来源:https://blog.csdn.net/weixin_43709538/article/details/135213031
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!