时间:2021-07-01 10:21:17 帮助过:18人阅读
修改:
DELIMITER $ CREATE TRIGGER tr_student_update AFTER UPDATE ON student FOR EACH ROW BEGIN SET @txt = CONCAT(‘修改学生:修改前[id:‘,old.id,‘,name:‘,old.name,‘,city:‘,old.city,‘,age:‘,old.age,‘,gradeId:‘,old.gradeId,‘]修改后[id:‘,new.id,‘,name:‘,new.name,‘,city:‘,new.city,‘,age:‘,new.age,‘,gradeId:‘,new.gradeId,‘]‘); INSERT INTO student_log VALUES(NULL,‘修改‘,@txt,‘admin‘,NOW()); END $ DELIMITER ;
删除:
1 DELIMITER $ 2 CREATE TRIGGER tr_student_delete AFTER DELETE ON student FOR EACH ROW 3 BEGIN 4 SET @txt = CONCAT(‘删除学生:[id:‘,old.id,‘,name:‘,old.name,‘,city:‘,old.city,‘,age:‘,old.age,‘,gradeId:‘,old.gradeId,‘]‘); 5 INSERT INTO student_log VALUES(NULL,‘删除‘,@txt,‘admin‘,NOW()); 6 END $ 7 DELIMITER ;
注意: 1,MySQL 不能将 insert,update,delete 放在一起,需分开建; 当前系统时间使用 NOW();
2,oracle支持 or replace 而mysql是不可以的
3,oracle在使用的变量要在begin前面声明。而mysql则用 @ 符号直接使用
4,oracle变量赋值用的是 := ,而mysql用的是 = 。
5,oracle新表和旧表用的是:new 和:old,而mysql用的是new 和old。
ORACLE 示例:
1 CREATE OR REPLACE TRIGGER tr_teacher AFTER INSERT OR UPDATE OR DELETE ON teacher FOR EACH ROW 2 declare 3 v_opt_type teacher_log.opt_type%TYPE; 4 v_old_value teacher_log.old_value%TYPE; 5 v_tno teacher_log.tno%TYPE; 6 begin 7 IF inserting THEN 8 v_opt_type:=1; 9 v_tno:=:new.tno; 10 ELSIF deleting THEN 11 v_opt_type:=2; 12 v_tno:=:old.tno; 13 v_old_value:=:old.tname||‘,‘||:old.sal||‘,‘||:old.comm; 14 ELSE 15 v_opt_type:=3; 16 v_tno:=:old.tno; 17 v_old_value:=:old.tname||‘,‘||:old.sal||‘,‘||:old.comm; 18 END IF; 19 INSERT INTO teacher_log VALUES(sq_log.nextval,v_old_value,SYSDATE,v_opt_type,v_tno); 20 end tr_teacher;
MySQL笔记
标签:cte 文本文件 将不 负数 user 需要 signed 其他 sys