在此場景中,目標是將資料同時插入兩個表格中:存取和登記。雖然單一 INSERT 語句通常可以將資料插入到一個表中,但在這種情況下是不可行的。
要解決這個挑戰,有兩個可行的選項:
1。批次插入:
將插入分解為兩個不同的 INSERT 語句並將它們作為批次執行。此方法涉及使用 EXECUTE 指令,如下所示:
START TRANSACTION; INSERT INTO visits (visit_id, card_id) VALUES (NULL, 12131141); INSERT INTO registration (registration_id, type, timestamp, visit_id) VALUES (NULL, 'in', UNIX_TIMESTAMP(), LAST_INSERT_ID()); COMMIT;
2.預存程序:
建立一個封裝兩個 INSERT 語句的預存程序。這允許您透過單一過程呼叫來執行兩次插入。考慮以下範例:
CREATE PROCEDURE insert_into_multiple_tables( IN visit_card_id INT, IN registration_type ENUM('in', 'out') ) BEGIN # Insert into `visits` table INSERT INTO visits (visit_id, card_id) VALUES (NULL, visit_card_id); # Insert into `registration` table INSERT INTO registration (registration_id, type, timestamp, visit_id) VALUES (NULL, registration_type, UNIX_TIMESTAMP(), LAST_INSERT_ID()); END;
要呼叫預存程序,請使用下列語法:
CALL insert_into_multiple_tables(12131141, 'in');
批次插入和預存程序方法都提供了將資料插入多個的可靠方法。表。兩者之間的選擇取決於具體的應用需求和效能考量。
以上是MySQL如何同時在多個資料表中插入資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!