1 多表触发
DROP TRIGGER if EXISTS j_ruku ;
DELIMITER $$
create trigger j_ruku
after UPDATE on j_kucun_ruku
for EACH ROW
BEGIN
set @ruku_beizhu=(select ruku_beizhu from j_kucun_ruku where g_id=old.g_id);
if @ruku_beizhu != '直接送货' then
UPDATE jbosskucun set jbosskucun.shicun=jbosskucun.shicun+old.shuliang-new.shuliang
where g_id=old.g_id;
end IF;
end $$
delimiter ;
易错:
a
,语法: 声明一个变量可用:set @XXX, 用直接声明或者子查询的方法来赋值,条件:当前改变的行,写法如上
b
,符号:;在完整的sql语句后要有,例如:set后,sql语句后,end if后.
2 单表触发
DROP TRIGGER IF EXISTS j_state;
DELIMITER $$
CREATE TRIGGER j_state
BEFORE UPDATE ON jbosskucun
FOR EACH ROW
BEGIN
IF new.shicun <0 THEN
SET new.state=-1;
END IF;
END $$
DELIMITER ;
单表触发中可以直接写,但要用new来表示修改之后的值