用mysql实现oracle序列的问题

duan17 2018-08-31 11:06:47
CREATE DEFINER=`test`@`%` FUNCTION `nextval`(seq_name1 varchar(50)) RETURNS int(11)
BEGIN
DECLARE VALUE1 INTEGER;
UPDATE xuliehao
SET CURRENT_VALUE = CURRENT_VALUE + 1
where seq_name = seq_name1;


SET VALUE1 = 0;
SELECT CURRENT_VALUE INTO VALUE1
FROM xuliehao
WHERE seq_name = seq_name1;

return VALUE1;
END

======
运行的时候有时候会卡住,好像是死锁了,不知道该怎么解决
加事务也没加上,不知道mysql的function是否支持事务,该怎么保证
并发的时候取的数据的正确性
...全文
666 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2018-09-01
  • 打赏
  • 举报
回复
1) mysql的function是否支持事务
2) 建议直接使用MYSQL本身的 auto_increment 来实现比较方便,如果是多个表/列中需要参考同一SEQUENCE,则可以考虑创建一个 create table seqA ( s int auto_increment primary key);然后在存储函数中,往这个表中插入数据得到S的LAST_INSERT_ID()

  • 打赏
  • 举报
回复
mysql 有自增列 也不错

56,914

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧