mysql触发器原生支持调用外部程序么

mysql触发器原生支持调用外部程序么,第1张

mysql 通过函数执本地命令、外部程序

昨天接到一个需求,要求在mysql的触发器中执行一个外部程序。

一开始没有什么头绪,后来发现嘿嘿。

id=211

有个叫mysqludf的一个东西,用起来还不错。

不过这个东西仅仅在linux下试了试,效果还行。

步骤如下:

一、解压附件的压缩包之后

如果不想自己编译的话,把lib_mysqludf_sysso文件放到 mysql的lib/mysql/plugin/

目录下。

二、执行chcon -t texrel_shlib_t mysql/lib/mysql/plugin/lib_mysqludf_sysso

三、创建函数

DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;

DROP FUNCTION IF EXISTS sys_get;

DROP FUNCTION IF EXISTS sys_set;

DROP FUNCTION IF EXISTS sys_exec;

DROP FUNCTION IF EXISTS sys_eval;

CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sysso';

CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sysso';

CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sysso';

CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sysso';

CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sysso';

四、测试

1、准备sh文件

在linux系统中执行下面的命令

su mysql

mkdir /mysqlUDFtest

cd mysqlUDFtest

vi testsh

#/bin/sh

date > testlogtxt

chmod +x /testsh

2、准备数据库表和触发器

选择一个数据库执行如下命令:

CREATE TABLE test1(a1 INT) type=InnoDB;

CREATE TABLE test2(a2 INT) type=InnoDB;

CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY) type=InnoDB;

CREATE TABLE test4(

a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

b4 INT DEFAULT 0

) type=InnoDB;

DELIMITER |

DROP TRIGGER /!50032 IF EXISTS / `test``testref`|

create trigger `test``testref` BEFORE INSERT on `test``test1`

for each row BEGIN

DECLARE done INT DEFAULT 999;

INSERT INTO test2 SET a2 = NEWa1;

DELETE FROM test3 WHERE a3 = NEWa1;

UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEWa1;

set done = sys_exec("/mysqlUDFtest/testsh");

IF done != 0 then

INSERT INTO `$amp;<amp ;$gt;22t3`="" (a,b); end="" if;END;

|

需要。有的接口会返回很多数据,有的接口可能就返回一个状态码及success之类的消息,这些需要验证数据库么

现在在写一个测试框架,配置接口参数和预期返回值,生成xml文件管理用例,用一个比较方法对预期和返回作比较,不需要根据每个接口写脚本,现在的疑惑只之比较返回值,并不清楚接口是否真的成功了,比如删除之类的接口,返回说成功了,但数据是否真的删除了如果要验证数据库,感觉得为每个用例写脚本去验证了,这就和初衷不符(只写个比较函数,比较返回的所有值,不需要为每个接口单独验证)

对于非Destoon系统表,传递table=tb_abc&prefix=或者table=abc&prefix=tb_,系统将识别表名为 tb_abc你安装到一个数据库里面调用不同表前缀不就行了

以上就是关于mysql触发器原生支持调用外部程序么全部的内容,包括:mysql触发器原生支持调用外部程序么、做一个网站调用外部接口需要数据库嘛、destoon destoon不支持调用外部数据库的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9491497.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存