gpt4 book ai didi

mysql - 一次将数据插入多个表时,自动增量无法正常工作

转载 作者:行者123 更新时间:2023-11-30 00:19:57 24 4
gpt4 key购买 nike

一些注意事项:我使用 INSERT IGNORE 因为我避免插入重复项。 'bookID'、'libraryID' 和 'personID' 是自增主键。

假设我的数据库中有三个表。

表 1“书籍”:

bookID | bookTitle
1 | 1st book
2 | 2nd book

......

表 2“库”:

libraryID | bookID(from table 'book') | libraryName
1 | 1 | 1st library
2 | 1 | 2nd library
3 | 2 | 2nd library

............

表 3“租赁”:

personID | libraryID(from table 'libraries') | personName
1 | 2 | John
2 | 3 | Shaq

........................

我尝试使用下面的查询一次将数据插入三个表中:

INSERT IGNORE INTO books (bookID,bookTitle)
VALUES ("",
"1st book");

INSERT
IGNORE INTO libraries (libraryID,bookID,libraryName)
VALUES ("",
(SELECT bookID
FROM books
WHERE bookTitle="1st book"),"1st library");

INSERT
IGNORE INTO rental (personID,libraryID,personName)
VALUES ("",
(SELECT libraryID
FROM libraries
WHERE libraryName="1st library"
AND bookID=
(SELECT bookID
FROM books
WHERE bookTitle="1st book")),"Mark");

此查询有效。我正在插入数千行。问题是身份证。我在查询中将“bookID”、“libraryID”和“personID”值保留为空,并期望它是整数序列,我的意思是:1,2,3,4,5,6,7,8,9,...然而,我得到了这个:1,5,100,152,1112,3456,...所有ID都是随机数,而不是正常序列。这件事发生在所有三个表中。我想我需要以某种方式修复我的查询。

是否可以修复查询以按我想要的方式工作?

编辑:当我开始使用较新版本的 MySQL(版本 4.1.5)时,问题就消失了。上面编写的查询按我想要的方式工作(我的不再有 auto_increment 问题)。谢谢你们的建议。我对此表示赞赏。

最佳答案

您不应在插入中使用任何与标题相关的检查(不使用 id:s)。例如,如果您插入两本具有相同标题的书,则这不起作用。

常见的方式是这样的:

  • 插入书籍而不指定 ID 并获取新的自动递增 ID(在 PHP 中,这是通过 $mysqli->insert_id 完成的)
  • 通过选择/插入名称来创建/获取库 ID
  • 使用这些 ID 插入新的租赁(不要使用任何产权值)

租赁/借款人还应该拥有自己的带有自己的 ID 字段的表。然后只需在租赁表中链接这些 ID:即可。

关于mysql - 一次将数据插入多个表时,自动增量无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23321224/

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