让它写一个扣库存的逻辑,生成的 SQL 是:先 select 查库存,判断够不够,再 update 减掉。

问题:查和更新之间有时间窗,并发下会超卖。

正确写法是在数据库层做原子操作:
update stock set count = count - 1 where id = ? and count >= 1
然后检查影响行数,0 行说明库存不足。

或者用乐观锁版本号,或者 select for update。

教训:模型写业务逻辑时,默认是单线程思维。涉及库存、余额、配额这类,一定要人工检查。

我在 CLAUDE.md 里加了一条:涉及资源扣减必须用原子 SQL 或显式加锁,并写注释说明。

主楼