视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL如何创建触发器
2020-11-09 20:26:45 责编:小OO
文档


本文实例为大家分享了MySQL创建触发器的具体代码,供大家参考,具体内容如下

先来个实例:

#建表
DROP TABLE IF EXISTS t_attendance;
CREATE TABLE t_attendance (
 job_no VARCHAR(30) DEFAULT '',
 operateTime VARCHAR(20) DEFAULT '',
 INDEX index_operateTime(operateTime),
 INDEX index_jobNo(job_no)
) ENGINE=INNODB DEFAULT CHARSET=utf8


#建触发器
DELIMITER $
CREATE TRIGGER t_afterinsert_on_doorlog AFTER INSERT 
ON t_doorlog FOR EACH ROW 
BEGIN
 DECLARE jobno VARCHAR(30);
 DECLARE time1 VARCHAR(20);
 SET jobno = (SELECT job_num FROM tb_park_user_base WHERE card_num = new.cardNo);
 SET time1 = DATE_FORMAT(new.operateTime,'%Y%m%d%H%i%s');
 INSERT INTO t_attendance (job_no, operateTime) 
 VALUES
 (jobno,time1);
END$

实例解析:

  先创建触发器中待存储的表t_attendance

  DELIMITER $   意思是告诉mysql下文执行语句以“$”结束,如果没有这句,下面语句会出错,mysql无法判断哪句结束。

  CREATE TRIGGER t_afterinsert_on_doorlog AFTER INSERT ON t_doorlog FOR EACH ROW   创建触发器的语法 其中AFTER同级关键字有BEFORE, INSERT同级关键字还有DELETE,UPDATE

      DECLARE jobno VARCHAR(30)   意思是声明触发器SQL中的局部变量

      SET jobno=....  意思是给局部变量赋值,=右边可为查询语句或函数方法

补充触发器的作用:

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。

数据库触发器有以下的作用:

1.安全性。可以基于数据库的值使用户具有操作数据库的某种权利。

  # 可以基于时间用户的操作,例如不允许下班后和节假日修改数据库数据。

  # 可以基于数据库中的数据用户的操作,例如不允许股票的价格的升幅一次超过10%。

2.审计。可以跟踪用户对数据库的操作。  

  # 审计用户操作数据库的语句。

  # 把用户对数据库的更新写入审计表。

3.实现复杂的数据完整性规则

  # 实现非标准的数据完整性检查和约束。触发器可产生比规则更为复杂的。与规则不同,触发器可以引用列或数据库对象。例如,触发器可回退任何企图吃进超过自己保证金的期货。

  # 提供可变的缺省值。

4.实现复杂的非标准的数据库相关完整性规则。触发器可以对数据库中相关的表进行连环更新。例如,在auths表author_code列上的删除触发器可导致相应删除在其它表中的与之匹配的行。

  # 在修改或删除时级联修改或删除其它表中的与之匹配的行。

  # 在修改或删除时把其它表中的与之匹配的行设成NULL值。

  # 在修改或删除时把其它表中的与之匹配的行级联设成缺省值。

  # 触发器能够拒绝或回退那些破坏相关完整性的变化,取消试图进行数据更新的事务。当插入一个与其主健不匹配的外部键时,这种触发器会起作用。例如,可以在books.author_code 列上生成一个插入触发器,如果新值与auths.author_code列中的某值不匹配时,插入被回退。

5.同步实时地复制表中的数据。

6.自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。例如,如果公司的帐号上的资金低于5万元则立即给财务人员发送警告数据。

下载本文
显示全文
专题