帮忙解决mysql存储过程的缓存问题
时间:2011-09-20
来源:互联网
delimiter //
CREATE PROCEDURE sequence
( IN seqName varchar(30),
OUT val INT )
BEGIN
declare maxValue int;
declare minValue int;
declare nowValue int;
select min_value,max_value,seq_value into minValue,maxValue,nowValue from comm_seq where seq_name=seqName for update;
if nowValue<maxValue then
update comm_seq set seq_value=seq_value+1 where seq_name=seqName;
else
update comm_seq set seq_value=minValue where seq_name=seqName;
end if;
select seq_value into val from comm_seq where seq_name=seqName;
commit;
END;
//
希望加上缓存机制,一次取出20个序列号,分配完后再重新拿到20个序列号。
作者: zhangna08 发布时间: 2011-09-20
作者: wwwwb 发布时间: 2011-09-20
作者: zhangna08 发布时间: 2011-09-20
作者: wwwwb 发布时间: 2011-09-20
作者: lzd_83 发布时间: 2011-09-20
如果你知道ORACLE的缓存机制,看看能否在MYSQL中用代码实现(可能要修改源码)
作者: wwwwb 发布时间: 2011-09-20
作者: zhangna08 发布时间: 2011-09-20
作者: wwwwb 发布时间: 2011-09-20
作者: zhangna08 发布时间: 2011-09-20
oracle中序列的生成用了缓存机制,开启了线程,mysql的存储过程中能开启线程吗?
MYSQL在存储过程开启线程?不能
作者: wwwwb 发布时间: 2011-09-20
很对,所以才用mysql存储过程实现,生成4位有序数。
作者: zhangna08 发布时间: 2011-09-20
作者: zhangna08 发布时间: 2011-09-20
作者: wwwwb 发布时间: 2011-09-20
作者: lanbaibai 发布时间: 2011-09-20
作者: zhangna08 发布时间: 2011-09-20
作者: zhangna08 发布时间: 2011-09-20
用SP实现?能详细一些吗?
思路:
取得起始值(加上FOR UPDATE)->加+1->写回表中
不如自增方便
作者: WWWWA 发布时间: 2011-09-20
作者: rucypli 发布时间: 2011-09-20
你可以通过存储过程近似的实现。 上次好像已经告诉过你了。
另外创建一个表 create table seq(sid int auto_increment primary key);
然后你可以直接 insert into seq values (null),(null),(null); 一次占用三个号码。并且通过last_insert_id 得到第一个号码。
作者: ACMAIN_CHM 发布时间: 2011-09-20
作者: shine333 发布时间: 2011-09-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28