在写实验时,现有表:现有库存、订单
需要创建一个触发器,在更新订单前需要判断库存是否足够,若不够则输出且回滚。
上面是实验要求的助教的原话,但我在实际写的时候,发现自己被这个助教师兄坑了。
这是我开始写的:
然后我在贴吧中了解到:触发器中不能有commit; 回滚这种事务语句。
这是贴吧地址
然后该怎么办呢?我直接删掉了rollback语句。再检测发现,如果库存不够signal“not enough goods”后,上面的update自动就没有执行。所以只需
set msg='not enough goods';
signal sqlstate 'HY000' set message_text=msg;
即可。