qeo*_*rge 2 mysql stored-procedures auto-increment
在我的表(MySQL)中,我有以下字段:
id - primary,auto_increment
hash - 基数36表示 id
我想一次填充两个字段,使用存储过程来计算INSERT上接收的值id的基数36.像这样的东西:
INSERT into `urls` (`id`,`hash`) VALUES (NULL,base36(`id`));
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,但我希望它说明了我想要实现的目标.这是可能的,如果是的话,怎么样?
注意:我只想使用一个查询,所以last_insert_id没有帮助(至少我理解).
这个问题基本上是对另一个问题的重述.简而言之,自动增量字段的优点是值保证唯一,缺点是在INSERT执行之前该值不存在.
这是必然的情况.例如,您可以为给定的表检索下一个自动增量值的内容,但由于并发问题,您无法确定接下来执行的查询是否是获取该ID的查询.其他人可能会先拿它.因此,ID字段的分配必须是在插入记录时发生的原子获取和增量操作.
换句话说,虽然您可能希望在单个查询中执行此操作,但您根本不会这样做.有一种方法你可以理论上假装你只是通过在INSERT上附加一个触发器来执行一个查询,该触发器在事实之后添加你的ID字段的替代表示.或者,您可以使用基于提前知道的非自动增量ID字段.
| 归档时间: |
|
| 查看次数: |
2590 次 |
| 最近记录: |