MST
星途 面试题库

面试题:SQLite高级SQL修改数据操作之事务与复杂业务逻辑更新

假设存在三个表:订单表orders (order_id, customer_id, order_date),订单项表order_items (order_item_id, order_id, product_id, quantity),产品表products (product_id, product_name, stock)。现在有一个业务场景,当某个订单被取消时(在orders表中标记订单状态为'cancelled'),需要将该订单下订单项涉及的产品库存恢复到订单生成前的数量(即库存数量加上订单项中的数量)。使用SQLite高级SQL修改数据操作结合事务处理,确保数据的一致性和完整性,写出相应的SQL代码实现该功能。
46.9万 热度难度
数据库SQLite

知识考点

AI 面试

面试题答案

一键面试
BEGIN TRANSACTION;

-- 更新产品表的库存
UPDATE products
SET stock = products.stock + order_items.quantity
FROM order_items
JOIN orders ON order_items.order_id = orders.order_id
WHERE orders.order_status = 'cancelled';

-- 在订单表中标记订单状态为'cancelled'
UPDATE orders
SET order_status = 'cancelled'
WHERE order_status NOT LIKE 'cancelled';

COMMIT;