触发器的使用

-- 触发器trigger格式
delimiter $$ -- 修改分隔符;改为$$ 这样在触发器中;就不会阻断程序了
create trigger user_insert_trigger
after insert on `user`
for each row -- 每行都要触发这个触发器
begin -- 开发触发器
 -- 自定义异常
 signal sqlstate '45000' set message_text='signal 停止设置,到此程序终止了 return';
  -- 程序代码
	insert into user_wallet (user_id,balance)
	VALUES(new.user_id,'0.00');
	
end ; -- 由于我已经将;改为$$所以这里的分号就不代表结束
$$ -- 结束了
delimiter ; -- 最后再将分隔符改回;

insert into `user` (username,`password`) VALUES('777','123456');
delimiter $$
create trigger delete_user_trigger
before delete on `user`
for each row
begin
 -- 删除代码
 delete from user_wallet where user_id=old.user_id;
 delete from user_wallet_log where user_id=old.user_id;
 end;
 $$
 delimiter ;
 
 delete from `user` where user_id=3;

#商品价格修改每次不能超过原价格的10%
delimiter $$
create trigger update_product_price
before update on product
for each row
begin
 -- 控制代码
 DECLARE result decimal(10,4);
 if new.price=0 then
  signal sqlstate '45000' set message_text='价格不允许改为0';
	end if;
	set result=(new.price-old.price)/old.price*100;
	signal sqlstate '45000' set message_text=result;
	if result>10 then
	signal sqlstate '45000' set message_text='价格上下浮动不能超过10%';
	end if;
	end;
	$$
	delimiter;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值