wordpress支持多站點(diǎn)yy直播
目錄
- 一、基本概述
- 二、語(yǔ)法結(jié)構(gòu)
- 三、基本使用
- 3.1 新增的觸發(fā)器
- 3.2 修改的觸發(fā)器
- 3.3 刪除的觸發(fā)器
一、基本概述
觸發(fā)器是與表有關(guān)的數(shù)據(jù)對(duì)象,在INSERT/UPDATE/DELETE之前或者是之后,觸發(fā)并執(zhí)行觸發(fā)器中定義的SQL語(yǔ)句的集合,觸發(fā)器的這種特性可以在協(xié)助應(yīng)用在數(shù)據(jù)庫(kù)端確保數(shù)據(jù)的完整性,日志記錄,數(shù)據(jù)校驗(yàn)等操縱。
使用別名OLD和NEW來(lái)引用觸發(fā)器中發(fā)生變化的記錄內(nèi)容,現(xiàn)在的觸發(fā)器只支持行級(jí)觸發(fā),不支持語(yǔ)句觸發(fā)
。
- 行級(jí)觸發(fā):每關(guān)聯(lián)一行數(shù)據(jù)都會(huì)觸發(fā)。
- 語(yǔ)句觸發(fā):在執(zhí)行這條語(yǔ)句時(shí)只觸發(fā)一次。
二、語(yǔ)法結(jié)構(gòu)
創(chuàng)建觸發(fā)器
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name FOR EACH ROW --- 行級(jí)觸發(fā)器
BEGIN...
END;
查看觸發(fā)器
SHOW TRIGGERS;
刪除觸發(fā)器
DROP TRIGGER 數(shù)據(jù)庫(kù)名.觸發(fā)器名
三、基本使用
通過(guò)觸發(fā)器記錄用戶表的變動(dòng)
創(chuàng)建用戶表
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;
創(chuàng)建用戶日志表
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 '操作時(shí)間',`operation_id` int NOT NULL COMMENT '操作ID',`operation_params` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作參數(shù)',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
3.1 新增的觸發(fā)器
編寫觸發(fā)器
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('插入的數(shù)據(jù)內(nèi)容為id=', new.id, 'name=', new.name, 'age=',new.age,'sex=',new.sex,'score=',new.score,'rq=',new.rq));
END;
向用戶表中插入數(shù)據(jù),查看是否已經(jīng)插入日志數(shù)據(jù)
INSERT INTO tb_user(name, age, sex, score, rq) VALUES ('測(cè)試觸發(fā)器', 100, 1, 999999, NOW());
3.2 修改的觸發(fā)器
編寫觸發(fā)器
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('更新之前的數(shù)據(jù)為id=', old.id, 'name=', old.name, 'age=',old.age,'sex=',old.sex,'score=',old.score,'rq=',old.rq,'更新之后的數(shù)據(jù)為id=', new.id, 'name=', new.name, 'age=',new.age,'sex=',new.sex,'score=',new.score,'rq=',new.rq));
END;
修改用戶數(shù)據(jù),查看是否已經(jīng)插入日志數(shù)據(jù)
UPDATE tb_user SET age=2000 WHERE id=7;
3.3 刪除的觸發(fā)器
編寫觸發(fā)器
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('刪除之前的數(shù)據(jù)內(nèi)容為id=', old.id, 'name=', old.name, 'age=',old.age,'sex=',old.sex,'score=',old.score,'rq=',old.rq));
END;
刪除用戶數(shù)據(jù),查看是否已經(jīng)插入日志數(shù)據(jù)
DELETE FROM tb_user WHERE id='7';