首页 > 数据库 >mysql实现nextVal功能

mysql实现nextVal功能

时间:2023-04-05 20:00:56浏览次数:45  
标签:功能 nextval name seq nextVal mysql VALUE CURRENT SQL

mysql实现nextVal功能

首先创建表:

CREATE TABLE `sys_sequence` (
    `NAME` varchar(50) NOT NULL,
    `CURRENT_VALUE` int(11) NOT NULL DEFAULT '0',
    `INCREMENT` int(11) NOT NULL DEFAULT '1',
    PRIMARY KEY (`NAME`)
  )

插入记录
INSERT INTO SYS_SEQUENCE(NAME,CURRENT_VALUE,INCREMENT) VALUES('TBL_FS', 1,1)

DELIMITER $$
 DROP FUNCTION IF EXISTS `currval`$$
 CREATE DEFINER=`root`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS INT(11)
 BEGIN
 DECLARE VALUE INTEGER;
 SET VALUE=0;
 SELECT current_value INTO VALUE
 FROM sys_sequence 
 WHERE NAME=seq_name;
 RETURN VALUE;
 END$$
 DELIMITER ;

查询当前记录:
select currval('TBL_FS');
如果出现Error Code: 1449 The user specified as a definer ('root'@'%') does not exist 错误,则执行如下sql:
grant all privileges on . to root@"%" identified by "password";
flush privileges;

继续执行当前记录sql则成功
创建nextval函数

DELIMITER $$
 DROP FUNCTION IF EXISTS `nextval`$$
  
 CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name varchar(50)) RETURNS int(11)
 BEGIN
 UPDATE sys_sequence
 SET CURRENT_VALUE = CURRENT_VALUE + INCREMENT
 where name=seq_name;
 return currval(seq_name);
 END$$
 DELIMITER ;

执行nextval函数
select nextval('tbl_fs')

创建函数过程中出现This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误

这是我们开启了bin-log, 我们就必须指定我们的函数是否是
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句

其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。

在MySQL中创建函数时出现这种错误的解决方法:
set global log_bin_trust_function_creators=TRUE;

标签:功能,nextval,name,seq,nextVal,mysql,VALUE,CURRENT,SQL
From: https://blog.51cto.com/u_14682436/6171520

相关文章

  • CentOS下安装MySQL8
    CentOS下安装MySQL81下载mysql包选择最新版本的mysql8的压缩包进行下载:https://dev.mysql.com/downloads/mysql/##进入应用安装目录cd/usr/localwgethttps://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz2解压缩和重命名#解......
  • mysql 主从配置 linux环境
    参考:https://blog.csdn.net/D1179869625/article/details/120773725 [root@localhost~]#vi/etc/my.cnf[mysqld]bind-address=0.0.0.0port=3306user=mysqlbasedir=/usr/local/mysqldatadir=/data/mysqlsocket=/tmp/mysql.socklog-error=/data/mysql/mysql.err......
  • Springboot+Mysql 图书管理系统【源码+sql】
    java项目学生图书管理系统(源码+数据库文件)技术框架:java+springboot+mysql后端框架:SpringBoot、SpringMVC、MyBatisPlus前端界面:Thymeleaf、BootStrap、jQuery系统共分为三种用户系统主要功能:系统设计三个角色,学生端,管理员端,系统管理员端1.普通用户书籍查询、书籍借阅......
  • mysql-联合字段
    CONCAT联合起来字段+字段连接SELECT *, CONCAT(MENU_NAME,":",PATH)FROM `t_menu`WHERE PARENT_IDIN(1,2,3)GROUP_CONCAT联合起来字段内容连接SELECT GROUP_CONCAT(MENU_NAME,'66'), GROUP_CONCAT('66',PATH) FROM `t_menu`WHER......
  • 1130 -Host 'ip' is not allowed to connect to this MySQL server
      由于mysql默认不允许其他IP地址(非虚拟机)访问可以将访问的用户(如root)的host由localhost(本机)改成%(任意,也可指定ip)最后flushprivileges刷新权限 [root@hadoop4~]#mysql-uroot-pmysql>usemysql;mysql>selecthost,userfromuser;+-----------+------+|host......
  • jsp+servlet+mysql实现的停车场管理系统(分为普通用户和管理员,实现注册登录、留言管理
    @目录jsp+servlet+mysql实现的停车场管理系统实现功能截图系统功能使用技术完整源码jsp+servlet+mysql实现的停车场管理系统本系统是一个servlet原生框架实现的停车场管理系统,总共分为两个角色,普通用户和管理员,实现了用户管理、停车信息管理、IC卡管理、临时停车管理、出入场管......
  • mysql linux 主从配置
    mysql安装https://www.cnblogs.com/kire-cat/p/16361559.html 主从配置https://blog.csdn.net/D1179869625/article/details/120773725......
  • 外卖APP系统开发要完善的功能,让你运筹帷幄
     开发一个外卖APP系统对于许多商家来说都是迫在眉睫的事情,可以说外卖APP系统对于商家的帮助是非常大的。不过在开发时我们要完善一些功能,下面名锐讯动为大家介绍外卖APP系统开发要完善的功能。 1.客户端。当用户进入外卖APP的时候首先浏览到的是APP的首页,这时候要求呈现商家提......
  • Scrapy爬虫框架 -- Mysql数据库存储数据
    一、新建一个项目scrapystartprojectmyslqst二、进入到项目目录并增加爬虫文件xiaohuacd.\myslqst\scrapygenspiderxiaohuawww.xxx.com三、修改配置文件,并开启管道存储ROBOTSTXT_OBEY=FalseLOG_LEVEL='ERROR'USER_AGENT="Mozilla/5.0(WindowsNT10.0;Win64;x64)......
  • MYSQL大批量数据插入的性能问题
    批处理rewriteBatchedStatements=true项目原来使用的大批量数据插入方法是Mybatis的foreach拼接SQL的方法。我发现不管改成MybatisBatch提交或者原生JDBCBatch的方法都不起作用,实际上在插入的时候仍然是一条条记录的插,速度远不如原来Mybatis的foreach拼接SQL的方法。这对于常......