INSERT INTO mall_delivery (order_id, carrier, tracking_no, status, receiver_name, address, shipped_at)
VALUES (#{orderId}, #{carrier}, #{trackingNo}, COALESCE(#{status},'READY'), #{receiverName}, #{address}, #{shippedAt})
UPDATE mall_delivery SET carrier=#{carrier}, tracking_no=#{trackingNo}, status=COALESCE(#{status},status),
receiver_name=#{receiverName}, address=#{address} WHERE id=#{id}
UPDATE mall_delivery SET status=#{status},
shipped_at = CASE WHEN #{status}='IN_TRANSIT' AND shipped_at IS NULL THEN NOW() ELSE shipped_at END,
delivered_at = CASE WHEN #{status}='DELIVERED' THEN NOW() ELSE delivered_at END
WHERE id=#{id}