触发器是在插入,删除或者修改的特定表的数据时触发执行,它可以看做是一种特殊的存储过程。创建触发器的语句如下
DELIMITER $$
USE `mps`$$
DROP TRIGGER /*!50032 IF EXISTS */ `name`$$
CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `name` AFTER/BEFORE DELETE/INSERT/UPDATE ON tablename
FOR EACH ROW BEGIN
END;
$$
DELIMITER ;
在創建存儲過程的時候,你可以選擇在表完成改变前或者后执行触发器。
使用new和old可以访问受触发程序影响的行中的列。
INSERT :仅能使用new来访问受影响的列new.columnname;
DELETE:仅能使用old来访问受影响的列old.columnname
UPDATE:既可以使用old也可以使用new,old.columnname指的是删除前的行的值,new.columnname是指更新后行的值
MySQL控制语句的使用
1. CASE WHEN的使用
UPDATE mat SET mat.`type`=(
CASE
WHEN mat.desc='JIT' THEN 'J'
WHEN mat.desc='國內' THEN 'I'
WHEN mat.desc='國外' THEN 'A'
ELSE 'Z'
END
)
2.if的使用
if(expr1,expr2,expr3)如果exper1成立,返回exper2否则返回exper3。
SELECT * ,IF(state=1,"yes","no") FROM fo_mps 如果state=1,則state的值為yes,否則是no
3,字符串的截取
LOCATE(substr,str) 字符串substr在str中第一次出现的位置,
LOCATE(substr,str,pos) 返回子串 substr 在字符串 str 中的第 pos 位置后第一次出现的位置。如果 substr 不在 str 中返回 0 :
left
UPDATE mat SET mat.`aday`=LEFT(ahead,LOCATE('天', ahead)-1 ) WHERE mat.`ahead`LIKE '%天'//截取从左边数从0,到指定位置的字符,right和它相似。