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

问题描述

预约表和预约详情表是两种关联表,预约表的主键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

我的感受

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

猜你喜欢

转载自blog.csdn.net/blingzeng/article/details/78693018