我有两个MySQL数据库表,用于保存ESHOP订单的数据。它们是这样构建的(极其简化的版本):
CREATE TABLE `orders` (
`id` int(11) NOT NULL auto_increment
PRIMARY KEY (`id`)
);
CREATE TABLE `order_items` (
`id` int(11) NOT NULL auto_increment,
`orderID` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
两者之间的关系是orders.id对应于order\u items.order id。
我正在使用一个事务来下一个新的订单,但是保留上面的关系有一个问题。为了获得新的订单ID,我必须提交ORDERS INSERT查询,获取自动增加的ID,然后为订单项启动另一个事务。这几乎破坏了使用事务的意义。
我可以在ORDERS表中插入新订单,然后尝试
INSERT INTO order_items(orderID) VALUES(LAST_INSERT_ID())
我想这是可行的。但是,在插入第一个订单项之后
LAST_INSERT_ID()
将停止返回订单ID,而是返回订单项ID,从而无法使用此查询插入其他订单项。
是否有一种方法可以使整个事务在单个事务中工作,或者我应该放弃并使用一个过程来代替它?