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;
检索自动增量值
要将自动增量id从users表插入到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, ...)");
注意
插入时考虑数据库一致性很重要多张桌子。如果中断,事务会确保所有查询要么完全执行,要么根本不执行。如果没有事务,部分插入可能会导致不一致。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3