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中文网其他相关文章!