当前位置:Gxlcms > 数据库问题 > MySQL笔记

MySQL笔记

时间:2021-07-01 10:21:17 帮助过:18人阅读

CREATE TRIGGER tr_student_insert AFTER INSERT ON student FOR EACH ROW   BEGIN   SET @txt = CONCAT(新增学生:[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 ;

  修改:

  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   

人气教程排行