1.delimiter $$
createtrigger trigger_delete afterdeleteon sell_order
for each rowBEGINDECLARE id int;DECLARE num int;select sellorderid into id from sell_order where sellorderid = old.sellorderid;-- 不能使用select 这样给num赋值-- select sellordernumber into num from sell_order where sellorderid = old.sellorderid;set num = old.sellordernumber;update product
set product.productstocknumber = product.productstocknumber + num, product.productsellnumber = product.productsellnumber - num where product.productid = old.productid;end $$
delimiter;DELETEfrom sell_order where sellorderid =31;dropTRIGGER trigger_delete;2.delimiter $$
createtrigger trigger_update afterupdateon sell_order
for each rowBEGINDECLARE num int;-- 无论正负值,后面全用加法就可以了set num = new.sellordernumber - old.sellordernumber;update product
set product.productstocknumber = product.productstocknumber - num,
product.productsellnumber = product.productsellnumber + num
where product.productid = old.productid;end $$
delimiter;update sell_order
SET sell_order.sellordernumber =100where sellorderid =8;dropTRIGGER trigger_update;3.delimiter $$
createtrigger trigger_deleted before deleteon employee
for each rowBEGINDECLARE id int;DECLARE num int;-- 获得员工id值 set id = old.employeeid;# 这里必需给num 变量赋初始值,要不然,select赋值时,会出现 num = null的情况,得不到正确结果。set num =0;selectcount(sellorderid)into num from sell_order where employeeid = id;if num >0thendeletefrom sell_order where employeeid = id;endif;end $$
delimiter;deletefrom employee where employeeid =3;dropTRIGGER trigger_deleted;-- 若生成触发器失败则执行:select version(),
@@sql_mode;SET sql_mode=(SELECTREPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));