2011-09-19 165 views
0

如何將數據插入到兩個或多個表中?PHP/MySQL插入問題

目前我正在使用這個技巧。 (讓我們假設語法是正確的)

$Sql1 = "insert into user"; 
$Sql2 = "insert into files"; 
$Sql3 = "insert into messages"; 

query $Sql1 
query $$ql2 
query $Sql3 

所以我使用這個,我需要優化。

另外,我想我需要使用外鍵?但我不知道如何在phpmyadmin上做到這一點。

最後:

這就是我想要的。

要在「user」表上插入數據,然後自動將表「messages」和「files」 也有一個與用戶相同的ID。這就是爲什麼我使用3個查詢在我的碼。

請幫幫我。

感謝ADVANCE!

myb

+3

爲什麼你需要優化呢?這三個查詢是否構成* actual *性能問題? –

回答

3

使用多個查詢完全沒問題。

但是,您應該將3個查詢包裝爲一個transaction。也就是說,如果一個對於的查詢失敗,某種原因,所有以前的查詢(如果有)的影響都可以回滾,以便數據庫保持一致狀態。

注意:事務對MySQL的MyISAM表是不可能的。此外,您必須使用PHP的Mysqli(或PDO)才能使用事務。 (我假設你使用一些高級的數據庫抽象層。)

至於你就外鍵問題:據我所知,這都沒有區別,當你使用我的數據庫中的表的MyISAM引擎(我認爲),因爲MyISAM甚至不支持顯式的外鍵建模。然而,像InnoDB這樣的其他表引擎可以使用外鍵來檢查某些限制,比如「一條消息必須總是與現有的人相關聯」。

下面是關於外鍵的一些很好的例子:http://www.postgresql.org/files/documentation/books/aw_pgsql/node131.html