[英]mysql is it possible to do insert into insert?
我們正在做的是將舊數據庫克隆為具有不同結構但應具有相同舊數據的新數據庫
是否可以在插入中執行 插入操作 ,以返回插入查詢的ID
INSERT INTO tab1 (nom,id_2) VALUES
("jack",(INSERT INTO tab2 (pass) VALUES ("1234")));
在INSERT INTO tab2 (pass) VALUES ("1234")
我想獲取插入的ID
但是沒有運氣! (我想在一個SQL查詢中 (我已經知道mysql_insert_id
))
提前致謝
您不能在單個查詢上執行此操作-使用mysql_insert_id()獲取最后插入的ID,例如:
mysql_query('INSERT INTO tab2 (pass) VALUES ("1234")');
$lastid = mysql_insert_id();
mysql_query('INSERT INTO tab1 (nom,id_2) VALUES ("jack",'.$lastid.')');
插入ID也可以在mysql中檢索,因此這是一個不涉及PHP的版本(但是它執行2個查詢)
INSERT INTO tab2 (pass) VALUES ("1234");
INSERT INTO tab1 (nom,id_2) VALUES("jack",LAST_INSERT_ID());
鎖定表,插入,選擇max(id),解鎖表。 如果由於某種原因而對最后一個插入id函數不利,這是在外部創建自己的序列表(如在postgres中)的唯一方法。 但是,如果您的表的寫入量中等到較高,則此方法將像將tar倒入攪拌機中。
您不能將其作為單個插入操作來完成,因為插入操作是原子的,也就是說,直到語句完成才確定ID。
將兩個語句包裝在一個事務中,您將獲得ID和原子性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.