本文主要是介绍mysql 指定库对所有表加tenant_id,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
mysql 指定库里所有表加tenant_id
由于业务所需,区分公司主体,tenant_id油然而生
但库里表至少几百个,不可能一个一个去加,时间成本,人力成本都很大,所以写一个存储过程函数,对其进行一次性操作
- 对表中已存在tenant_id忽略
DELIMITER //
CREATE PROCEDURE AddTenantIdToTables()
BEGINDECLARE done INT DEFAULT 0;DECLARE tableName VARCHAR(255);DECLARE colCount INT;DECLARE cur CURSOR FOR SELECT table_nameFROM information_schema.tablesWHERE table_schema = 'test' AND table_type = 'BASE TABLE';DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;OPEN cur;read_loop: LOOPFETCH cur INTO tableName;IF done THENLEAVE read_loop;END IF;-- 检查表是否已包含 tenant_id 列SELECT COUNT(*) INTO colCountFROM information_schema.columnsWHERE table_name = tableNameAND column_name = 'tenant_id';-- 如果 tenant_id 列不存在,则添加IF colCount = 0 THEN-- 构造 ALTER TABLE 语句为表新增字段 tenant_idSET @alterQuery = CONCAT('ALTER TABLE ', tableName, ' ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT "租户id";');-- 执行 ALTER TABLE 语句PREPARE stmt FROM @alterQuery;EXECUTE stmt;DEALLOCATE PREPARE stmt;END IF;END LOOP;CLOSE cur;
END //
DELIMITER ;
⭐️生成好该函数后,执行该函数,即可
这篇关于mysql 指定库对所有表加tenant_id的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!