繁体   English   中英

mysql使用第二张表中的auto_increment值作为第二张表中的外键插入到两个表中

[英]mysql insert into two tables using auto_increment value from the first table as a foreign key in the second

我想插入购物车表格

**orderId** | cartId | cartDate | cartStatus
____________________________________________
1           | 1      | 20120102 | complete
2           | 2      | 20120102 | complete
3           | 3      | 20120102 | complete
4           | 4      | 20120102 | complete

使用订单表中的自动增量值orderId

**orderId** | orderStatus | secret   | sauce
____________________________________________
1           | 7          | 020200202 | bbq
2           | 6          | 020200202 | bbq
3           | 6          | 020200202 | t
4           | 4          | 020200202 | m


INSERT INTO ordertable VALUES(null,7,020200202,bbq)

但随后使用orderId(现在为5)

INSERT INTO carttable VALUES(orderId,20120102,complete)

但是,此插入必须与同一查询相同。 如果我使用mysql_last_id(php),那么其他人就有机会在执行购物车插入之前将其插入数据库。 否则连接可能会超时。 数据库是MyISAM(并且我无法更改此第三方解决方案)。

谢谢J

我认为您对使用mysql_last_id是没有根据的-它会返回当前连接的最后一个ID,而不是所有连接中全局的最后一个ID。

因此,除非有多个线程共享同一数据库连接,或者在调用mysql_last_id之前在同一连接上执行另一个标识插入, mysql_last_id您不必担心。

预计到达时间:您可以通过一次发送多个查询来做到这一点,如下所示:

INSERT INTO ordertable VALUES(null,7,020200202,bbq);
INSERT INTO carttable VALUES(LAST_INSERT_ID(),20120102,complete);

但是,如果您使用的是mysql_query ,通常不允许您在同一调用中发送多个查询(主要是为了防止SQL注入而采取的安全措施)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM