同时向多个表插入数据
在 MySQL 中可以实现同时向两个表插入数据,尽管它需要不同的方法提供的 SQL 语句。
提供的查询尝试在单个操作中将数据插入到访问表和登记表中。然而,MySQL 并不直接支持这一点,因为 INSERT 语句一次只能针对一张表。要获得所需的结果,您有以下选项:
批处理
批量执行两个单独的 INSERT 查询:
BEGIN; 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;
存储过程
创建一个封装两个插入操作的存储过程:
CREATE PROCEDURE insert_into_tables( IN card_id INT, IN type ENUM('in', 'out'), IN timestamp INT ) BEGIN DECLARE visit_id INT; INSERT INTO visits (card_id) VALUES (card_id); SET visit_id = LAST_INSERT_ID(); INSERT INTO registration (registration_id, type, timestamp, visit_id) VALUES (NULL, type, timestamp, visit_id); END;
然后您可以使用所需的参数调用存储过程:
CALL insert_into_tables(12131141, 'in', UNIX_TIMESTAMP());
事务管理
要确保两个插入操作都以原子方式执行,请将它们包装在事务中:
BEGIN 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;
通过利用这些方法,您可以MySQL 中同时向多个表插入数据。
以上是MySQL如何同时向多个表插入数据?的详细内容。更多信息请关注PHP中文网其他相关文章!