mysql currval 和 nextval 函数的实现

一、currval

DROP FUNCTION IF EXISTS `currval` ;
 

DELIMITER $$
 
CREATE DEFINER=`root`@`%` FUNCTION `currval`(v_seq_name VARCHAR(50)) RETURNS INT(11)
BEGIN
DECLARE VALUE INTEGER;
SET VALUE=0;
SELECT current_val INTO VALUE
FROM sequence 
WHERE seq_name=v_seq_name;
RETURN VALUE;
END;

$$
 
DELIMITER ;

二、nextval

DROP FUNCTION IF EXISTS `nextval`;

DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `nextval`(v_seq_name varchar(50)) RETURNS int(11)
BEGIN
UPDATE sequence
SET CURRENT_VAL= CURRENT_VAL + INCREMENT_VAL
where seq_name=v_seq_name;
return currval(v_seq_name);
END;

$$

DELIMITER

 

由于直接复制 可能会在执行中报格式错误 所以提供正确的格式版本 下载地址

由于csdn上传资源不能设置免积分。。。。所以需要的人 还是直接复制吧  别下载了 下载的这个 是给我自己备份用的
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在KingbaseES v8中,关于序列的nextvalcurrval,错误的描述是: - nextval不能在一个事务中多次调用 - currval只能在nextval之后调用 实际上,nextval可以在一个事务中多次调用,而且currval也可以在nextval之前调用。 ### 回答2: 在KingbaseESv8中,关于序列的nextvalcurrval描述错误的情况是: 1. nextval:nextval用于获取序列的下一个值,而不是当前值。它会返回序列的下一个值,并且在获取后会将序列的值自动增加。因此,描述中如果提到nextval返回的是当前值,那是错误的。 2. currvalcurrval是用于获取序列的当前值的函数。它会返回上一个被nextval获取的序列值,并不会自动增加序列的值。因此,描述中如果提到currval会将序列的值自动增加,那是错误的。 总结来说,nextval用于获取序列的下一个值并自动增加,而currval用于获取序列的当前值而不会自动增加。 ### 回答3: 在KingbaseESv8中,关于序列的nextvalcurrval的描述都是正确的。 - nextval函数用于获取序列的下一个值,并且将序列的值加1。它返回当前序列的下一个值,然后自动更新序列。如果没有调用nextval函数currval函数将无法正确获取序列的当前值。 - currval函数用于获取序列的当前值,即最后一次获取的序列值。它返回当前序列的当前值,不会自动更新序列的值。注意,只有在对序列至少调用一次nextval函数之后,才能调用currval函数获取当前值。 因此,关于nextvalcurrval函数的描述都是准确无误的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值