2011-03-30 100 views
1

什麼是在下列情況下的最佳做法:MySQL的 - 插入值與多個表未知的主鍵

我想寫一個MySQL的語句從結果集取數據(加入3個表) ,並將這些值插入到3個新表中。現在有兩個問題,一個是我想同時插入到三個表中,另一個是需要進入三個表中的兩個的值之一是由插入值生成的主要kry進入三張桌子中的第一張。

在高級別術語(忽略語法),我想:

INSERT INTO `table1`(
        `one_field1`, 
        `one_field2`, 
        ... 
       ), `table2`(-- not possible? 
        `two_field1`, 
        `two_field2`, 
        ... 
       ), `table3`(-- not possible? 
        `three_field1`, 
        `three_field2`, 
        ... 
       ) 
SELECT   value1, 
       value2, 
       ..., 
       value3, 
       value4, 
       ..., 
       value5, 
       value6, 
       ... 
FROM   ... 

其中value3value5是從插入value1value2table1產生的主鍵。

是不是更好(最佳實踐)將其拆分爲多個查詢,或者是否有在單個查詢中執行此操作的有效方法?

感謝

回答

1

插入到多個表中有一個說法是不可能的 http://dev.mysql.com/doc/refman/5.1/en/insert.html

你可以用`LAST_INSERT_ID()來得到最後插入自動增量值。所以如果你打破了你的插入,你可以在運行下一個插入之前得到每個插入的最後一個主鍵(假設你正在使用自動增量)。 http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id

+0

只需使用視圖作爲臨時轉換表即可解決問題。 – 2011-03-30 14:13:19

-2

例如:INSERT INTO districtsdistrict)VALUES( '巴加爾科特'),( '班加羅爾農村'),( '班加羅爾城市'),( '貝爾高姆'),( '貝拉里'),('Bidar '),('Bijapur'),('Chamraj Nagar'),('Chikballapur'),('Chickmagalur'),('Chitradurga'),('Dakshina Kannada'),('Davanagere'), '),(' Gadag '),(' 古爾伯加 '),(' 哈桑 '),(' 哈韋裏 '),(' Kodagu '),(' 科拉爾 '),(' 科普帕爾 '),(' Mandya') ,'('Ramore'),('Raichur'),('Shimoga'),('Tumkur'),('Karwar'),('Udupi'),('Yadgir')

+1

這不回答這個問題。 – 2014-01-12 13:22:40