Mysql 6.0无法手动抛异常

抛异常的代码是:

SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '手动抛出异常' ;   

可能是Mysql版本问题,5.7可以,6.0不行

解决办法:

删除一个不存在的表,主动制造异常...(这个方法有点坑)

练习的时候没考虑事务

业务是添加一条订单表,但是库存不足,实现的功能是不生成订单,

解决方法是:

触发器:

create trigger stock_manager
BEFORE insert on t_stockout_detal
for each row
BEGIN
DECLARE med_count int default 0;
select med_stock into med_count from t_medicine where med_id = new.sdtl_med_id;
if med_count>=new.sdtl_num then
	update t_medicine set med_stock = med_stock - new.sdtl_num where med_id = new.sdtl_med_id;
else
	delete from t_stockout_detal where sdtl_id = new.sdtl_id;//实际上执行会报错(有点二)
end IF;
end;
<delete id="delete">
    delete from t_stockout_log where slog_id not in (select sdtl_slog_id from t_stockout_detal);
</delete>


service层:

如果添加不成功,再刚才的基础上,再执行一段sql

	@Override
	public boolean addStockoutLog(StockoutLogBean stockoutlog) {
		stkd.add(stockoutlog);
		List<StockoutDetalBean> sdtlList = stockoutlog.getSdtlList();
		for (StockoutDetalBean stockoutDetalBean : sdtlList) {
			stockoutDetalBean.setSdtlSlog(stockoutlog);
		}
		int n = sdd.add(sdtlList);
		if(n<=0) {
			stkd.delete();
		}
		return n>0;
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值