MySQL 插入多個表:資料庫規範化
MySQL 不直接支援將資料同時插入多個表。不過,還有其他方法可以實現此功能。
使用交易
為確保表間資料一致性,建議使用交易。事務將一系列查詢封裝為一個單元,保證所有查詢同時成功或失敗。
以下是使用交易的範例:
BEGIN; INSERT INTO users (username, password) VALUES('test', 'test'); INSERT INTO profiles (userid, bio, homepage) VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com'); COMMIT;
檢索自動增量Value
要將users表中的自增id插入到profiles表中,可以使用LAST_INSERT_ID() 函數。但是,如果後續插入語句插入到具有自己的自動增量列的表中,則 LAST_INSERT_ID() 值將更新為該表的值。
要保留原始 LAST_INSERT_ID() 值,您可以儲存它位於事務內的自訂變數中。
使用MySQL變數:
INSERT ... SELECT LAST_INSERT_ID() INTO @mysql_variable_here; INSERT INTO table2 (@mysql_variable_here, ...);
使用語言變數:
// PHP example $mysqli->query("INSERT INTO table1 ..."); $userid = $mysqli->insert_id; $mysqli->query("INSERT INTO table2 ($userid, ...)");
注意
重要的是插入多個表時考慮資料庫一致性。如果中斷,事務將確保所有查詢要么完全執行,要么根本不執行。如果沒有事務,部分插入可能會導致不一致。
以上是如何同時向多個MySQL表插入資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!