(一)、觸發器的語法:
CREATE TRIGGER 觸發器名
after / before (觸時間)
insert / update / delete (觸發條件)
ON
表名
FOR EACH ROW
BEGIN
觸發事件
END;
(二)、觸發器實驗:
第一個觸發器:
當用戶購買商品時(也就是訂單表增加訂單數據時),商品表的該商品會自動減去用戶購買的數量。
CREATE TRIGGER addOrder BEFORE insert ON ord FOR EACH ROW BEGIN
DECLARE goodsNum int;
select number into goodsNum from goods where gid=new.gid;
IF new.much > goodsNum THEN set new.much = goodsNum;
END IF;
IF new.much < 0 THEN set new.much = 0;
END IF;
update goods set number = number - new.much where gid = new.gid;
END;
第二個觸發器:
當用戶刪除訂單時,商品表的該商品會自動增加用戶刪除的訂單數量。
CREATE TRIGGER delOrder before delete ON ord FOR EACH ROW
BEGIN
update goods set number = number + old.much where gid = old.gid;
END;
第三個觸發器:
當用戶修改訂單數量時,商品表的該商品會自動減去或增加數量。
CREATE TRIGGER upOrder before update ON ord FOR EACH ROW
BEGIN
DECLARE goodsCount INT;
SELECT number INTO goodsCount FROM goods WHERE gid = new.gid;
IF new.much > goodsCount THEN set new.much = goodsCount;
END IF;
IF
new.much < 0 THEN set new.much = 0;
END IF;
update goods set number = number+old.much-new.much where gid=new.gid;
END;