我的数据库中有三个表。用户表,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/