mysql:从函数创建另一个模式的表
我想要一个函数,如果不存在的话,创建一个表到另一个模式,然后将一个值插入到一个表中。我尝试创建以下函数mysql:从函数创建另一个模式的表,mysql,function,Mysql,Function,我想要一个函数,如果不存在的话,创建一个表到另一个模式,然后将一个值插入到一个表中。我尝试创建以下函数 CREATE DEFINER=`root`@`localhost` FUNCTION `testFun`(oldStr VARCHAR(256), newStr VARCHAR(256)) RETURNS boolean BEGIN CREATE TABLE IF NOT EXISTS association.Association(email VARCHAR(30) NOT NUL
CREATE DEFINER=`root`@`localhost` FUNCTION `testFun`(oldStr VARCHAR(256), newStr VARCHAR(256)) RETURNS boolean
BEGIN
CREATE TABLE IF NOT EXISTS association.Association(email VARCHAR(30) NOT NULL, maskedEmail VARCHAR(30) NOT NULL);
INSERT INTO association.Association (email, maskedEmail) VALUES (oldStr, newStr );
RETURN TRUE;
END
但当我尝试执行该函数时,mysqlWorkBench返回以下错误:
ERROR 1422: Explicit or implicit commit is not allowed in stored function or trigger.
这将是创建表。为什么要从函数中删除它?因为,动态创建一个包含电子邮件和屏蔽电子邮件之间关联的表对我很有用MySQL不允许您创建表,所以您必须以另一种方式解决这个问题,可能是在触发器中。@P.Salmon触发器不允许隐式提交,要么。@giupardeb感觉你解决了错误的问题。如果需要这个表,那么现在就创建它。如果代码的其他部分正在检查它,那么不管怎样,它需要在那里,即使它是空的。