gpt4 book ai didi

mysql - 使用当前的 auto_increment 值作为同一 INSERT 查询中另一个字段的基础——这在 MySQL 中可能吗?

转载 作者:行者123 更新时间:2023-11-29 01:19:28 25 4
gpt4 key购买 nike

在我的表 (MySQL) 中,我有这些字段:

id - primary, auto_increment

hash - id 的 base 36 表示法

我想同时填充这两个字段,使用存储过程来计算 id 在 INSERT 上接收的值的 base 36 等价物。像这样:

INSERT into `urls` (`id`,`hash`) VALUES (NULL,base36(`id`));

显然这行不通,但我希望它能说明我正在努力实现的目标。这可能吗?如果可能,如何实现?

注意:我只想使用一个查询,因此 last_insert_id 没有帮助(至少据我所知)。

最佳答案

这个问题本质上是对 this other one 的重述.简而言之,自增字段的优点是保证值的唯一性,缺点是在执行 INSERT 之前该值不存在。

这是必然的情况。例如,您可以检索给定表的下一个自动增量值是什么,但是由于并发性问题,您不能确定接下来执行的查询将是那个得到那个ID。别人可能会先拿走它。因此,ID 字段的分配必须是在插入记录时发生的原子获取和递增操作。

换句话说,虽然您可能希望在单个查询中执行此操作,但您根本不会这样做。理论上,您可以通过在 INSERT 上附加一个触发器来假装您只执行一个查询,该触发器会在事后添加您对 ID 字段的替代表示。或者,您可以使用基于提前已知信息的非自动递增 ID 字段。

关于mysql - 使用当前的 auto_increment 值作为同一 INSERT 查询中另一个字段的基础——这在 MySQL 中可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com