mysql触发器调用外部脚本
2014-09-30 11:55
204 查看
思路:
需要安装一个mysql的udf函数。这样就可以了。
源码:
#在tbls表上面创建触发器
#由于不能查询到刚插入的那条记录。所以只能在这边手动的传参
drop TRIGGER trigger_tbls;
create TRIGGER trigger_tbls AFTER INSERT ON hive_metastore.TBLS
FOR EACH ROW
BEGIN
DECLARE script_sh VARCHAR(200) DEFAULT 'sh /opt/trigger/trigger_tbls.sh ';
DECLARE h_num VARCHAR(300) DEFAULT NEW.TBL_ID;
DECLARE script_str_sh VARCHAR(2000) DEFAULT CONCAT(script_sh,h_num);
DECLARE cur2 CURSOR FOR select sys_exec(script_str_sh);
OPEN cur2;
insert into test.test_1(name,date_time,type) values(script_str_sh,NOW(),'table_meta');
CLOSE cur2;
END;
#在partition上面创建触发器
drop TRIGGER trigger_tbls_partition;
create TRIGGER trigger_tbls_partition AFTER INSERT ON hive_metastore.PARTITION_KEYS
FOR EACH ROW
BEGIN
declare script varchar(4000) DEFAULT 'sh /opt/trigger/trigger_par.sh ';
declare num varchar(300) DEFAULT NEW.TBL_ID;
declare key_name varchar(300) DEFAULT NEW.PKEY_NAME;
declare key_name_str varchar(300) DEFAULT CONCAT(" ",key_name);
declare script_str varchar(4000) DEFAULT CONCAT(script,num,key_name_str);
DECLARE cur1 CURSOR FOR select sys_exec(script_str);
insert into test.test_1(name,date_time,type) values(script_str,NOW(),'partition');
OPEN cur1;
CLOSE cur1;
END;
#SELECT * FROM information_schema.`TRIGGERS`;
需要安装一个mysql的udf函数。这样就可以了。
源码:
#在tbls表上面创建触发器
#由于不能查询到刚插入的那条记录。所以只能在这边手动的传参
drop TRIGGER trigger_tbls;
create TRIGGER trigger_tbls AFTER INSERT ON hive_metastore.TBLS
FOR EACH ROW
BEGIN
DECLARE script_sh VARCHAR(200) DEFAULT 'sh /opt/trigger/trigger_tbls.sh ';
DECLARE h_num VARCHAR(300) DEFAULT NEW.TBL_ID;
DECLARE script_str_sh VARCHAR(2000) DEFAULT CONCAT(script_sh,h_num);
DECLARE cur2 CURSOR FOR select sys_exec(script_str_sh);
OPEN cur2;
insert into test.test_1(name,date_time,type) values(script_str_sh,NOW(),'table_meta');
CLOSE cur2;
END;
#在partition上面创建触发器
drop TRIGGER trigger_tbls_partition;
create TRIGGER trigger_tbls_partition AFTER INSERT ON hive_metastore.PARTITION_KEYS
FOR EACH ROW
BEGIN
declare script varchar(4000) DEFAULT 'sh /opt/trigger/trigger_par.sh ';
declare num varchar(300) DEFAULT NEW.TBL_ID;
declare key_name varchar(300) DEFAULT NEW.PKEY_NAME;
declare key_name_str varchar(300) DEFAULT CONCAT(" ",key_name);
declare script_str varchar(4000) DEFAULT CONCAT(script,num,key_name_str);
DECLARE cur1 CURSOR FOR select sys_exec(script_str);
insert into test.test_1(name,date_time,type) values(script_str,NOW(),'partition');
OPEN cur1;
CLOSE cur1;
END;
#SELECT * FROM information_schema.`TRIGGERS`;
相关文章推荐
- WebBrowser执行脚本和调用外部方法。
- java调用mysql的工具类实现数据库远程备份,还原,生成创建表的sql脚本
- MySQL引用外部sql脚本
- mysql将查询部分数据导出到外部文件的脚本,文件格式替换
- linux sh 脚本调用外部命令
- [MySQL FAQ]系列 -- mysql如何调用系统外部程序
- MYSQL执行外部sql脚本
- shell脚本 如何调用Mysql的存储过程 解决方案
- shell脚本调用mysql后重定向到新的文档
- mysql 调用外部程序
- mysql中的存储过程、触发器、视图是如何创建的,以及PHP中是如何调用的
- sqlserver 2000 触发器 存储过程调用外部dll,可以使vb,vc,delphi生成
- sqlserver 2000 触发器 存储过程调用外部dll,可以使vb,vc,delphi生成
- MySQL执行外部sql脚本
- awk学习小记:关于调用外部脚本文件
- WebBrowser执行脚本和调用外部方法
- mysql中的存储过程、触发器、视图是如何创建的,以及PHP中是如何调用的
- MySQL执行外部sql脚本文件的命令
- 在Java中执行脚本命令以及调用外部程序说明
- MySQL执行外部sql脚本文件的命令