您遇到了一个困境:使用单个表同时将数据插入到多个表中MySQL 查询。然而,您发现这是不可能的。为了克服这个挑战,您考虑使用多个查询:
INSERT INTO users (username, password) VALUES('test', 'test') INSERT INTO profiles (userid, bio, homepage) VALUES('[id of the user here?]','Hello world!', 'http://www.stackoverflow.com')
但是现在您面临一个新问题:如何将 users 表中的自动增量 ID 分配给profile表?
答案:利用事务
虽然你不能插入多个在单个 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;
理解 LAST_INSERT_ID()
LAST_INSERT_ID() 函数允许您重用自动增量值。在第二条语句中,LAST_INSERT_ID() 将自动检索在第一条语句中插入的自动增量列的值。
替代方法
1。使用 MySQL 变量:
INSERT ... SELECT LAST_INSERT_ID() INTO @mysql_variable_here; INSERT INTO table2 (@mysql_variable_here, ...); INSERT INTO table3 (@mysql_variable_here, ...);
2.使用 PHP 或其他语言变量:
注意事项事务一致性
将查询包装在事务中以确保数据一致性至关重要,这意味着要么所有查询成功,要么没有查询成功。如果执行在查询之间中断,则某些表可能已插入记录,而另一些表则没有。交易保证这种情况不会发生。
以上是如何同时向多个MySQL表插入数据并保持数据完整性?的详细内容。更多信息请关注PHP中文网其他相关文章!