## 事务与缓存

### 自动事务
```magicscript
// lambda 内的所有数据库操作在同一事务中，异常自动回滚
var result = db.transaction(() => {
    db.update('update account set balance = balance - #{amount} where id = #{fromId}')
    db.update('update account set balance = balance + #{amount} where id = #{toId}')
    return '转账成功'
})
return result
```

### 手动事务
```magicscript
var tx = db.transaction()
try {
    db.insert('insert into order_log(order_id, action) values(#{orderId}, "create")')
    db.update('update product set stock = stock - #{qty} where id = #{productId}')
    tx.commit()
    return '操作成功'
} catch(e) {
    tx.rollback()
    exit 500, '操作失败: ' + e.getMessage()
}
```

### 缓存查询
```magicscript
// 使用缓存，key='user'，有效期 60000ms（60秒）
return db.cache('user', 60000).select('select * from user')

// 更新时自动清除对应缓存
db.cache('user').update('update user set name = #{name} where id = #{id}')

// 手动清除缓存
db.deleteCache('user')
```

### 多数据源
```magicscript
// 使用从库查询
return db.slave.select('select * from user')

// 动态数据源（变量指定）
var dsKey = 'report_db'
return db[dsKey].select('select * from statistics')

// 不同数据源支持同样的 API（select/table 等）
return db.slave.table('user').where().eq('status', 1).select()
```