MySql根据第一张表生成的ID插入到多张表

标签 mysql

我的数据库中有三个表。用户表,StoreA 和 StoreB

StoreA 和StoreB 都有一个唯一键,即用户ID 值。

我想要的是;当我创建一个用户并将其插入数据库时​​,如何在没有太多额外查询的情况下将一行插入到其他两个表中。

我想我可以通过在一个查询中插入用户来做到这一点, 然后在另一个返回新创建的用户 ID, 然后在另一个中,使用所述 ID,在 StoreA 和 StoreB 中创建行

我可以删掉中间的查询吗?

最佳答案

Can I cut out the middle query?

START TRANSACTION;
INSERT INTO user (id, name, other) 
          VALUES (null, 'John','rest of data');
INSERT INTO storeA (id, user_id, other) 
            VALUES (null, @user_id:= LAST_INSERT_ID(), 'rest of data');
INSERT INTO storeB (id, user_id, other) 
            VALUES (null, @user_id, 'rest of data');
COMMIT;

参见:http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

在事务中执行此操作是个好主意,如果出现问题,您不会被一个没有其他数据的用户困住。
但这不是数据库要求。

关于MySql根据第一张表生成的ID插入到多张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363656/

相关文章:

php - 我可以在 PHP 中混合使用 MySQL API 吗?

mysql - 如何使用 PHP CodeIgniter 将 CSV 数据导入 MYSQL 数据库?

mysql - 使用 ONLY_FULL_GROUP_BY mysql 模式 hibernate

mysql - 从 SQL 导入数据时时间格式发生变化

php - 如何使用 imap 更快地读取多条消息状态

mysql写入和读取地理边界(矩形)

java mysql select函数总是返回0

MySQL 动态 ORDER BY

mysql - 良好的数据库设计/规范化

MySQL Window函数计算百分比