数据库的自动增长的主键查找

本文探讨了在数据库设计中如何处理自增主键ID的问题,特别是在预约表与其详情表之间的关联场景下,提供了多种解决方案,包括修改主键生成方式、利用唯一标识符查询等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

预约表和预约详情表是两种关联表,预约表的主键id是预约详情表的外键,当添加预约表的时候,我们会有好几条预约详情表的数据需要添加,这个时候我们需要获取预约表的主键id,但是我们的预约表中的主键id是自增长的,在插入预约表的时候我们并不能获取插入数据的主键。当我们想实现在插入预约表的时候,将预约详情表的数据也插入,该怎么做?

解决方法

1. 在设计数据库的时候,不要将主键设置为自增长,设置成随机生成。这样我们在插入预约表的时候,我们就可以获取预约表的主键。
2. 在插入预约表中的数据中找到一个可以唯一标识的数据。将这个数据作为查询条件,查询一遍之后便可以得到我们想要的主键。
3. 在表中增加一个可以唯一标识的数据,如当前时间(精确到毫秒),然后我们将这个数据当作查询条件,查询一遍之后,我们可以得到我们想要的数据。
4. 使用select max(id) from tableName;
5. 使用 last_insert_id();不过这个需要注意的是:
    1. 函数基于connection,所以如果你的插入语句和函数使用语句不在同一个connection,是没有效果的。
    2. 函数是与表无关的,如果在a表插入一条语句,在b表插入一条语句,使用函数后,是返回b表中的主键值
    3. 使用insert语句插入多条,返回插入第一条的主键值

6. 使用mysql的全局参数:@@identity

我的感受

问题的解决方法往往不止有一种,当我们的以为只有一种方法的时候,我觉得有必要通过一些必要的途径,如网络查找,咨询大牛等方法去发现和寻找其他的解决方法,然后比较两个方法的优缺点选择最适合自己项目的解决方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值