mysql触发器的作用

发布网友 发布时间:2022-04-20 20:57

我来回答

2个回答

懂视网 时间:2022-04-30 04:27

* FROM information_schema.`TRIGGERS`;
触发器语法

触发器(trigger):监视某种情况,并触发某种操作。

触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)

语法:

create trigger triggerName

after/before insert/update/delete on 表名

for each row #这句话在mysql是固定的一般都是做行级触发所以这么写 但不是必须的  for each row 就代表每行都相应XXX事件(insert update delete) 理解成每当往表插入(更新 删除)一行的时候就触发

begin

sql语句;

end;
添加用户时的触发器
CREATE TRIGGER add_trigger_us
AFTER INSERT on us_users
FOR EACH ROW
BEGIN

INSERT into us_person(`name`,age)VALUES(new.`name`,new.age); 

end

// insert into us_user(`name`,age)values(‘wang‘,10000);
注意:新插入的行用new来表示,行中的每一列的值用new.列名来表示。
修改用户时的触发器

CREATE TRIGGER update_trigger_us
AFTER UPDATE on us_person
for EACH ROW
BEGIN

UPDATE us_users set age=new.age where `name`=new.`name`;

END

//UPDATE us_person set age=9999 where `name`=‘wang‘;
注意:

对于update而言:被修改的行,修改前的数据,用old来表示,old.列名引用被修改之前行中的值;


修改的后的数据,用new来表示,new.列名引用被修改之后行中的值。




删除时的触发器


CREATE TRIGGER delete_trigger_us
AFTER DELETE on us_users
FOR EACH ROW

BEGIN

DELETE from us_person where `name`=old.`name`;

end

//DELETE from us_users where id=129007;

注意 delete中不存在new ,对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除的行的值。
先讲一下after和before的区别:

after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新商品的数量;

before是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作;

例如:操作数据前判断,数据的值,进行修改

主要来源:http://www.cnblogs.com/zzwlovegfj/archive/2012/07/05/2578574.html

mysql的触发器

标签:

热心网友 时间:2022-04-30 01:35

数据库触发器有下面的作用:
1.安全性。能够基于数据库的值使用户具有操作数据库的某种权利。
  # 能够基于时间*用户的操作,比如不同意下班后和节假日改动数据库数据。
2.审计。能够跟踪用户对数据库的操作。   
  # 审计用户操作数据库的语句。
  # 把用户对数据库的更新写入审计表。
3.实现复杂的数据完整性规则
  # 实现非标准的数据完整性检查和约束。触发器可产生比规则更为复杂的*。与规则不同,触发器能够引用列或数据库对象。比如,触发器可回退不论什么企图吃进超过自己保证金的期货。
  # 提供可变的缺省值。
4.实现复杂的非标准的数据库相关完整性规则。触发器能够对数据库中相关的表进行连环更新。比如,在auths表author_code列上的删除触发器可导致对应删除在其他表中的与之匹配的行。
  # 在改动或删除时级联改动或删除其他表中的与之匹配的行。
  # 在改动或删除时把其他表中的与之匹配的行设成NULL值。
  # 在改动或删除时把其他表中的与之匹配的行级联设成缺省值。
  # 触发器可以拒绝或回退那些破坏相关完整性的变化,取消试图进行数据更新的事务。当插入一个与其主健不匹配的外部键时,这样的触发器会起作用。比如,可以在books.author_code 列上生成一个插入触发器,假设新值与auths.author_code列中的某值不匹配时,插入被回退。
5.同步实时地复制表中的数据。
6.自己主动计算数据值,假设数据的值达到了一定的要求,则进行特定的处理

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com