gpt4 book ai didi

MySQL - INSERT INTO SELECT ( INSERT INTO ...) - 嵌套插入

转载 作者:行者123 更新时间:2023-11-29 09:24:13 27 4
gpt4 key购买 nike

我试图同时在不同的表上插入两行。
子查询INSERT INTO的AUTO_INCRMENT或id的值(如果已经存在)应该写入主查询中。

目前我有这个(仅用 3 个值简化),但它不起作用。我想知道是否有更好的方法来做到这一点。

INSERT IGNORE INTO access(`entryid`, `logid`, `urlid`)  
SELECT '0', '1', (INSERT IGNORE INTO urls(`url`) VALUES('example.com'));

我显然可以为此目的执行多个单独的查询,但我认为将其插入到一个查询中可以提高代码的可靠性(因为它永远不会在查询中途“失败”)。我只是在寻找嵌套的 INSERT INTO 解决方案。

最佳答案

为什么不将这些查询移至 transaction ?如果您这样做,如果其中任何一个查询失败,则整个 block 将被回滚。如果您使用LAST_INSERT_ID(),您可以获得先前插入的ID并使用它( see docs )。

基于您的查询的示例:

START TRANSACTION;
INSERT IGNORE INTO urls(`url`) VALUES('example.com');
INSERT IGNORE INTO access(`entryid`, `logid`, `urlid`) VALUES (0, 1, LAST_INSERT_ID());
COMMIT;

关于MySQL - INSERT INTO SELECT ( INSERT INTO ...) - 嵌套插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881503/

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