资讯详情

MySQL-----触发器

触发器定义:触发器是相关表的数据库对象,指的是update/insert/delete在触发器中定义操作前后将执行sql语句集合,可用于日志记录、数据验证等。

1.创建触发器:

create trigger trigger_name before/after insert/update/delete  on table-name for each row  begin  sql 语句  end;

2.删除触发器:

drop trigger trigger_name;

3.查看触发器:

show triggers;

4.案例:

通过触发器记录表的数据变化

-- 创建表语句  CREATE TABLE emp_logs ( id INT ( 11 ) NOT NULL auto_increment, operation VARCHAR ( 20 ) NOT NULL COMMENT '操作类型, insert/update/delete', operate_time datetime NOT NULL COMMENT 操作时间, operate_id INT ( 11 ) NOT NULL COMMENT '操作表的ID', operate_params VARCHAR ( 500 ) COMMENT 操作参数, operate_acnu VARCHAR(100)  COMMENT 操作帐号, PRIMARY KEY ( `id` )  ) ENGINE = INNODB DEFAULT charset = utf8;  -- 创建insert类型触发器  CREATE TRIGGER emp_logs_insert_trigger AFTER INSERT ON emp FOR EACH ROW BEGIN  INSERT INTO emp_logs ( id, operation, operate_time, operate_id, operate_params ) VALUES  (NULL,'insert',now( ),new.id,concat( '插入后(id:', new.id, ', name:', new.NAME, ', age:', new.age, ', salary:', new.salary, ')' ) );  END ;  -- 创建update类型触发器  DELIMITER $ CREATE TRIGGER emp_logs_update_trigger AFTER UPDATE ON emp FOR EACH ROW BEGIN  INSERT INTO emp_logs ( id, operation, operate_time, operate_id, operate_params ) VALUES  (NULL,'update',now( ),new.id,  concat('修改前(id:',old.id,', name:',old.NAME,', age:',old.age,', salary:',old.salary,  ') , 修改后(id',new.id,'name:',new.NAME,', age:',new.age,', salary:',new.salary,')' )   );  END $  -- 创建delete 类型触发器  CREATE TRIGGER emp_logs_delete_trigger AFTER DELETE ON emp FOR EACH ROW BEGIN  INSERT INTO emp_logs ( id, operation, operate_time, operate_id, operate_params ) VALUES  (NULL,'delete',now( ),old.id,concat( '删除前(id:', old.id, ', name:', old.NAME, ', age:', old.age, ', salary:', old.salary, ')' ) );  END;  

标签: sii1634acnu集成电路

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台