项目里的需求: 提现表,支付宝信息被修改,怎么限制, 插入的数据针对字段不被修改
delimiter //
CREATE TRIGGER users_withdraw_update BEFORE UPDATE ON users_withdraw
FOR EACH ROW
BEGIN
IF OLD.alipay_num is not null THEN
SET NEW.alipay_num = OLD.alipay_num,NEW.money= OLD.money,NEW.real_money=OLD.real_money;
END IF;
END;//
delimiter ;
针对字段剖析:
- users_withdraw_update 触发器的自定义名称
- before 在…之前
- update 表示用来监听更新语句的
- users_withdraw 表名
- for each row 针对每条更新数据都有效
- OLD.alipay_num 表示修改这条记录的原始值,NEW.alipay_num 表示要修改成为的值
命令执行完之后, 可以尝试测试下触发器, 使用update 语句, 此触发器只针对,alipay_num,money,real_money 三个字段不能修改, 其余字段不影响
顺便说下delimiter, 对于没有深究mysql语言的, 有可能会懵逼,网上的讲解mysql trigger的实例 为什么写法都不同, 我就是懵逼的一员
delimiter是mysql分隔符,在mysql客户端中分隔符默认是分号";" 大家都知道mysql>执行的命令 ,然后加上";" 之后回车才执行,不然不执行.我上面的例子代表 delimiter 定好结束符为"//", 用完之后最后又重新定义为";"