中国政务网站建设绩效评估,河源网站开发,泊头市做网站价格,交通建设监理协会网站目录 一、基本概述二、语法结构三、基本使用3.1 新增的触发器3.2 修改的触发器3.3 删除的触发器 一、基本概述 触发器是与表有关的数据对象#xff0c;在INSERT/UPDATE/DELETE之前或者是之后#xff0c;触发并执行触发器中定义的SQL语句的集合#xff0c;触发器的这种特性可… 目录 一、基本概述二、语法结构三、基本使用3.1 新增的触发器3.2 修改的触发器3.3 删除的触发器 一、基本概述 触发器是与表有关的数据对象在INSERT/UPDATE/DELETE之前或者是之后触发并执行触发器中定义的SQL语句的集合触发器的这种特性可以在协助应用在数据库端确保数据的完整性日志记录数据校验等操纵。 使用别名OLD和NEW来引用触发器中发生变化的记录内容现在的触发器只支持行级触发不支持语句触发。 行级触发每关联一行数据都会触发。语句触发在执行这条语句时只触发一次。 二、语法结构
创建触发器
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name FOR EACH ROW --- 行级触发器
BEGIN...
END;查看触发器
SHOW TRIGGERS;删除触发器
DROP TRIGGER 数据库名.触发器名三、基本使用 通过触发器记录用户表的变动 创建用户表
CREATE TABLE tb_user (id int NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,age int NULL DEFAULT NULL,sex varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,score decimal(10, 2) NULL DEFAULT NULL,rq date NULL DEFAULT NULL,PRIMARY KEY (id) USING BTREE
) ENGINE InnoDB AUTO_INCREMENT 6 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ROW_FORMAT DYNAMIC;创建用户日志表
CREATE TABLE user_log (id int NOT NULL AUTO_INCREMENT,operation varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 操作类型 insert/update/delete,operation_time datetime NOT NULL COMMENT 操作时间,operation_id int NOT NULL COMMENT 操作ID,operation_params varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 操作参数,PRIMARY KEY (id) USING BTREE
) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ROW_FORMAT Dynamic;3.1 新增的触发器
编写触发器
CREATE TRIGGER tb_user_insert_trigger AFTER INSERT ON tb_user FOR EACH ROW
BEGININSERT INTO user_log(operation, operation_time, operation_id, operation_params) VALUES (insert, NOW(), new.id, CONCAT(插入的数据内容为id, new.id, name, new.name, age,new.age,sex,new.sex,score,new.score,rq,new.rq));
END;向用户表中插入数据查看是否已经插入日志数据
INSERT INTO tb_user(name, age, sex, score, rq) VALUES (测试触发器, 100, 1, 999999, NOW());3.2 修改的触发器
编写触发器
CREATE TRIGGER tb_user_update_trigger AFTER UPDATE ON tb_user FOR EACH ROW
BEGININSERT INTO user_log(operation, operation_time, operation_id, operation_params) VALUES (update, NOW(), new.id, CONCAT(更新之前的数据为id, old.id, name, old.name, age,old.age,sex,old.sex,score,old.score,rq,old.rq,更新之后的数据为id, new.id, name, new.name, age,new.age,sex,new.sex,score,new.score,rq,new.rq));
END;修改用户数据查看是否已经插入日志数据
UPDATE tb_user SET age2000 WHERE id7;3.3 删除的触发器
编写触发器
CREATE TRIGGER tb_user_delete_trigger AFTER DELETE ON tb_user FOR EACH ROW
BEGININSERT INTO user_log(operation, operation_time, operation_id, operation_params) VALUES (delete, NOW(), new.id, CONCAT(删除之前的数据内容为id, old.id, name, old.name, age,old.age,sex,old.sex,score,old.score,rq,old.rq));
END;删除用户数据查看是否已经插入日志数据
DELETE FROM tb_user WHERE id7;