Mysql触发器

1、
#after insert
DELIMITER $$
USE `databasename`$$
DROP TRIGGER /*!50032 IF EXISTS */ `trigger_after_insert_trigger_name`$$
CREATE
    /*!50017 DEFINER = 'root'@'%' */
    TRIGGER `trigger_after_insert_trigger_name` AFTER INSERT ON `table_name` 
    FOR EACH ROW BEGIN
    INSERT INTO username.`table_name`
    VALUES(new.column1,new.column2,new.column3,new.column4,new.column5,new.column6,new.column7,new.column8);
    END;
$$
DELIMITER ;
2、
#before insert
DELIMITER $$
USE `test`$$
DROP TRIGGER /*!50032 IF EXISTS */ `t_beforeinsert_1`$$
CREATE
    /*!50017 DEFINER = 'root'@'localhost' */
    TRIGGER `t_beforeinsert_1` BEFORE INSERT ON `test1` 
    FOR EACH ROW BEGIN
    DECLARE insertlog VARCHAR(25) DEFAULT '向test1插入:';
    DECLARE chang INT DEFAULT new.id;
    SET insertlog=CONCAT(insertlog,chang);
    SET NAMES gbk;
    INSERT INTO `test`.`test3` VALUES(insertlog);
    INSERT INTO `test`.`test2` VALUES(new.id);
    END;
$$
DELIMITER ;
3、
#after update
DELIMITER $$
USE `test`$$
DROP TRIGGER /*!50032 IF EXISTS */ `t_afterupdate_1`$$
CREATE
    /*!50017 DEFINER = 'root'@'localhost' */
    TRIGGER `t_afterupdate_1` AFTER UPDATE ON `test1` 
    FOR EACH ROW BEGIN
    /*old表示修改之前的值,new表示修改之后的值*/
     UPDATE test.`test2` t1 INNER JOIN `test`.`test1` t2 ON t1.id=old.id SET t1.id=new.id;
    END;
$$
DELIMITER ;
4、
#before update
DELIMITER $$
USE test $$
DROP TRIGGER IF EXISTS `test`.`t_beforeupdate_1`$$
CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    TRIGGER `test`.`t_beforeupdate_1` BEFORE UPDATE
    ON `test`.`test1`
    FOR EACH ROW BEGIN
DECLARE insertlog VARCHAR(25) DEFAULT 'update table ';
DECLARE chang INT DEFAULT new.id;
SET insertlog=CONCAT(insertlog,old.id,' to ',chang);
SET NAMES gbk;
INSERT INTO `test`.`test3` VALUES(insertlog);
UPDATE `test`.`test2` t1 INNER JOIN  `test`.`test2` t2 ON t1.id=old.id SET t1.id=new.id;
    END$$
DELIMITER ;
5、
#after delete
DELIMITER $$
USE test $$
DROP TRIGGER IF EXISTS `test`.`t_afterdelete_1` $$
CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    TRIGGER `test`.`t_afterdelete_1` AFTER DELETE
    ON `test`.`test1`
    FOR EACH ROW BEGIN
     DELETE FROM test.`test2` WHERE id=old.id;
    END;
 $$
DELIMITER ;
6、
#before delete
DELIMITER $$
USE `test`$$
DROP TRIGGER /*!50032 IF EXISTS */ `t_beforedelete_1`$$
CREATE
    /*!50017 DEFINER = 'root'@'localhost' */
    TRIGGER `t_beforedelete_1` BEFORE DELETE ON `test1` 
    FOR EACH ROW BEGIN
DECLARE delLog VARCHAR(25) DEFAULT 'delete test2 id ';
DECLARE val INT DEFAULT old.id;
DECLARE nowdate DATE DEFAULT CURDATE();
SET delLog=CONCAT(delLog,old.id);
INSERT INTO `test`.`test3` VALUES(delLog,nowdate);
DELETE FROM `test`.`test2` WHERE id=old.id;
    END;
$$
DELIMITER ;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值