myql中常用上级路径包含本身

mysql自定义函数获取上级的路径实例

sql 复制代码
CREATE  FUNCTION `querydept_path_name`(depetId VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE sTempPath VARCHAR(255);
DECLARE sTempChd VARCHAR(255);
DECLARE sFullPath VARCHAR(255);
 
SET sTempChd = depetId;
SET sFullPath ='';
SET sTempPath ='';
 
WHILE (sTempChd <> '' ) DO
select ifnull((SELECT dept_name FROM dept_info  WHERE id = sTempChd),'') INTO sTempPath;
SET sFullPath = CONCAT(sFullPath,sTempPath,'/');
select ifnull((SELECT parent_id FROM dept_info  WHERE id = sTempChd),'')  INTO sTempChd;

END WHILE;
 
RETURN sFullPath;
END

函数创建失败错误信息

创建函数时报错信息

sql 复制代码
[Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

解决办法

解决方法

  1. 在mysql数据库中执行以下语句 (临时生效,重启后失效)
sql 复制代码
set global log_bin_trust_function_creators=TRUE;

或者

sql 复制代码
set global log_bin_trust_function_creators=1;
  1. 在配置文件/etc/my.cnf[mysqld]或者my-default.ini文件中配置
sql 复制代码
[mysqld]
log_bin_trust_function_creators=1

测试函数路径

默认路径为逆序

sql 复制代码
select querydept_path_name('10011')

路径正序

sql 复制代码
select REVERSE(querydept_path_name('10011'))
相关推荐
北友舰长16 分钟前
基于Springboot+thymeleaf图书管理系统的设计与实现【Java毕业设计·安装调试·代码讲解】
java·spring boot·mysql·课程设计·图书管理·b/s·图书
麦麦鸡腿堡1 小时前
MySQL数据库操作指令
数据库·mysql
聪明努力的积极向上8 小时前
【MYSQL】字符串拼接和参数化sql语句区别
数据库·sql·mysql
2301_768350238 小时前
MySQL为什么选择InnoDB作为存储引擎
java·数据库·mysql
哥哥还在IT中9 小时前
MySQL order by 如何优化
数据库·mysql
逻极9 小时前
Python MySQL防SQL注入实战:从字符串拼接的坑到参数化查询的救赎
python·mysql·安全·sql注入
帅大大的架构之路9 小时前
mysql批量插入数据如何更快
数据库·mysql
Amber_3710 小时前
mysql 死锁场景 INSERT ... ON DUPLICATE KEY UPDATE
数据库·mysql
思成不止于此11 小时前
【MySQL 零基础入门】MySQL 约束精讲(一):基础约束篇
数据库·笔记·sql·学习·mysql
逐梦吧!旅行者12 小时前
Linux MySQL 5.7用户管理与用户密码的设置问题
linux·mysql