gpt4 book ai didi

mysql - 一次插入多个表

转载 作者:行者123 更新时间:2023-11-29 21:56:17 25 4
gpt4 key购买 nike

结构:

表A)

CREATE TABLE Item (
Id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Unique id of an item',
`By` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (Id),
CONSTRAINT FK_Item_User_Name FOREIGN KEY (`By`)
REFERENCES User(Name) ON DELETE NO ACTION ON UPDATE CASCADE
)

表B)

CREATE TABLE ItemName (
Item_Id INT(11) UNSIGNED NOT NULL COMMENT 'Item id this name is referencing',
Language VARCHAR(5) NOT NULL COMMENT 'language code by ISO 639-2/T',
Translation VARCHAR(50) NOT NULL COMMENT 'Item name for given language',
PRIMARY KEY (Item_Id, Language),
CONSTRAINT FK_ItemName_Item_Id FOREIGN KEY (Item_Id)
REFERENCES Item(Id) ON DELETE CASCADE ON UPDATE CASCADE
)

表C)

CREATE TABLE User (
Name VARCHAR(50) NOT NULL,
Password VARCHAR(50) NOT NULL,
Salt VARCHAR(255) NOT NULL,
Blocked TINYINT(1) DEFAULT 0,
PRIMARY KEY (Name),
UNIQUE INDEX UK_User_Name (Name)
)
<小时/>

问题:

现在我想插入一个新项目。假设用户向我们提供:

  • 翻译
  • 语言代码
  • 用户名

到目前为止我得到了什么:

我正在考虑将其放入事务中并依次插入到每个表中。但后来我陷入了如何知道在 ItemName.Item_Id 字段中使用什么 Item.Id 的问题,因为 Item 表将为插入提供一个新的 Id。

我可以获得最后一个 Item.Id,但如果多个用户同时插入新项目,它可能会指向另一个项目。

ps。引擎=InnoDB

最佳答案

BEGIN;
INSERT into one table;
get the last_insert_id() -- there are many ways to do this, depending on the API
INSERT into next table...
... ;
COMMIT;

按照避免违反 FOREIGN KEY 的顺序进行插入。

关于mysql - 一次插入多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33131623/

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