为了账号安全,请及时绑定邮箱和手机立即绑定

mysql-建立类似于Oracle序列的机制

mysql-建立类似于Oracle序列的机制

森林海 2019-12-06 11:01:12
MySQL提供了一种自动增加记录ID的机制。这可以用于许多目的,但是我需要能够使用ORACLE提供的序列。显然,为此目的创建表是没有意义的。解决方案应该很简单:1)创建一个表以托管所有需要的序列,2)创建一个增加特定序列的值并返回新值的函数,3)创建一个返回序列当前值的函数。从理论上讲,它看起来很简单...但是...当增加一个序列的值时(与nextvalOracle中的相同),您需要阻止其他会话执行此操作(甚至获取当前值),直到更新完成。两个理论选择:a-使用UPDATE语句,一次即可返回新值,或者b-将表锁定在UPDATE和SELECT之间。不幸的是,MySQL似乎不允许在函数/过程中锁定表,并且在尝试在单个语句(例如UPDATE ... RETURNING ...)中完成整个操作时,必须使用@ -type变量,这些变量必须存在功能/程序的完成。有人对此有想法/可行的解决方案吗?谢谢。
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

我懂了。我通常会同意您的意见(例如,insert / updates / selects属于PROCEDURES),只是在这种情况下,它将是一组通用服务(即,创建序列,删除序列,获取序列当前值,获取序列下一个值等) ),因此(至少以我的口味)它具有一系列功能。就像我说的,有品味。非常感谢您的推荐。当然投票

查看完整回答
反对 回复 2019-12-06
  • 2 回答
  • 0 关注
  • 616 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信