您的位置:首页 > 数据库 > MySQL

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`;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: