簡體   English   中英

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

[英]MySQL - INSERT INTO SELECT ( INSERT INTO ...) - Nested insert into's

我試圖同時在不同的表上插入兩行。
子查詢 INSERT INTO 的 AUTO_INCREMENT 或id (如果它已經存在)的值應該寫在主查詢中。

目前我有這個(簡化為 3 個值),但它不起作用。 我想知道是否有更好的方法來做到這一點。

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

我顯然可以為此目的執行多個單獨的查詢,但我認為將其插入一個查詢可以提高我的代碼的可靠性(因為它永遠不會在查詢中途“失敗”)。 我只是在尋找嵌套的 INSERT INTO 解決方案。

為什么不將這些查詢移動到事務中 如果你這樣做,如果這些查詢中的任何一個失敗,整個塊將被回滾。 如果您使用LAST_INSERT_ID()您可以獲得之前插入的 ID 並使用它( 請參閱文檔)。

基於您的查詢的示例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM