mysql 创建 触发器在 50个(数据库)dbname 下
我现在自己编写一个自动化脚本,在50个数据库下 自动创建触发器对某几张表,但是开发过程遇到一些问题,请帮我看看 感谢
DELIMITER //
CREATE PROCEDURE prc_ctl_tables(IN tablename VARCHAR(255))
BEGIN
declare v_table_name varchar(100);
declare v_db_name varchar(100);
declare EmptyData int default 0;
declare v_cnt int default 0;
declare v_done int default 0;
declare v_i int default 0;
declare tab_name varchar(200) default '';
declare tab_name_1 varchar(200) default '';
declare v_message varchar(200);
declare v_cursor cursor for (select distinct table_name,table_schema from information_schema.columns where table_name = tablename );
declare CONTINUE HANDLER FOR NOT FOUND SET v_done = 1;
open v_cursor;
# 循环
repeat
# 获取游标中值并赋值给变量
fetch v_cursor into v_table_name,v_db_name;
# 判断游标是否到底,若到底则退出游标
# 需要注意这个判断
if v_db_name is not null and not v_done then
#set tab_name = concat('create table v_newtable',' as select * from `tg_table` where 1=2;');
set tab_name_1 = concat( 'use ', v_db_name,';');
#set tab_name_1 = concat('select * from tg_table;');
SET @SQL_1 = concat(tab_name_1);
select @SQL_1;
prepare schema_stmt_1 from @SQL_1;
EXECUTE schema_stmt_1;
deallocate prepare schema_stmt_1;
#set tab_name = concat('insert into ',v_db_name,'.','tg_table select', ' 444',',',' 444',',',' 444',';');
set tab_name = concat('select * from',v_db_name,'.',tg_table,';');
SET @SQL = CONCAT(tab_name);
select @SQL;
prepare schema_stmt from @sql;
EXECUTE schema_stmt;
deallocate prepare schema_stmt;
end if;
until v_done end REPEAT;
fetch v_cursor into v_table_name,v_db_name;
if v_db_name is null then
set v_message=concat('not exists table ',':',tablename);
select v_message;
end if;
close v_cursor;
END//
DELIMITER ;
/* 主要问题 在这里,我一定要切换到对应的数据库才能执行我创建触发器的脚本,这里报错 不识别我的命令语法,set tab_name_1 = concat( 'use ', v_db_name,';');
感谢感谢