最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?使用觸發(fā)器記錄用戶的操作日志問題

 更新時間:2022年12月05日 14:33:09   作者:睿思達DBA_WGX  
使用?MySQL?觸發(fā)器可以記錄哪些用戶、什么時間對數(shù)據(jù)表進行了增、刪、改操作。如果執(zhí)行刪除操作,則記錄刪除之前的數(shù)據(jù)記錄;如果執(zhí)行更新操作,記錄更新之前的數(shù)據(jù)記錄,這篇文章主要介紹了MySQL?使用觸發(fā)器記錄用戶的操作日志,需要的朋友可以參考下

MySQL 使用觸發(fā)器記錄用戶的操作日志

使用 MySQL 觸發(fā)器可以記錄哪些用戶、什么時間對數(shù)據(jù)表進行了增、刪、改操作。如果執(zhí)行刪除操作,則記錄刪除之前的數(shù)據(jù)記錄;如果執(zhí)行更新操作,記錄更新之前的數(shù)據(jù)記錄。

一、創(chuàng)建用戶數(shù)據(jù)表(emp)和保存操作日志的表(emp_log)

-- 創(chuàng)建用戶數(shù)據(jù)表:emp
DROP TABLE IF EXISTS  `emp`;
CREATE TABLE `emp` (
    `emp_id` int(11) AUTO_INCREMENT COMMENT '員工id',
    `emp_name` char(50) NOT NULL DEFAULT '' COMMENT '員工姓名',
    `birth` date COMMENT '出生日期',
    `salary` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '工資',
    `comm` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '獎金',
    `phone` char(20) NOT NULL DEFAULT '' COMMENT '電話',
    `addr` varchar(200) NOT NULL DEFAULT '' COMMENT '地址',
    `created_at`  timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP comment '插入記錄的時間',
    `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '最后更新記錄的時間',
    PRIMARY KEY (`emp_id`),
    KEY `idx_empname` (`emp_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '員工信息數(shù)據(jù)表';

-- 查看表結構
mysql> desc emp;
+------------+---------------+------+-----+-------------------+------------------------+
| Field      | Type          | Null | Key | Default           | Extra                  |
+------------+---------------+------+-----+-------------------+------------------------+
| emp_id     | int(11)       | NO   | PRI | NULL              | auto_increment         |
| emp_name   | char(50)      | NO   | MUL |                   |                        |
| birth      | date          | YES  |     | NULL              |                        |
| salary     | decimal(10,2) | NO   |     | 0.00              |                        |
| comm       | decimal(10,2) | NO   |     | 0.00              |                        |
| phone      | char(20)      | NO   |     |                   |                        |
| addr       | varchar(200)  | NO   |     |                   |                        |
| created_at | timestamp     | NO   |     | CURRENT_TIMESTAMP |                        |
| updated_at | timestamp     | NO   |    | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+---------------+------+-----+-------------------+------------------------+
9 rows in set (0.00 sec)

-- 創(chuàng)建操作日志表:emp_log
DROP TABLE IF EXISTS  `emp_log`;
CREATE TABLE `emp_log` (
    `emplog_id` int(11) AUTO_INCREMENT COMMENT '操作日志id',
    `operate_type` char(20) COMMENT '操作類型:insert(插入)、delete(刪除)、update(更新)',
    `operate_user` char(50) COMMENT '執(zhí)行操作的用戶名稱',
    `operate_time` datetime COMMENT '操作時間',
    `emp_id` int(11) COMMENT '員工id',
    `emp_name` char(50) COMMENT '員工姓名',
    `birth` date COMMENT '出生日期',
    `salary` decimal(10,2) COMMENT '工資',
    `comm` decimal(10,2) COMMENT '獎金',
    `phone` char(20) COMMENT '電話',
    `addr` varchar(200) COMMENT '地址',
    PRIMARY KEY (`emplog_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '員工操作日志信息表';

-- 查看表結構
mysql> desc emp_log;
+--------------+---------------+------+-----+---------+----------------+
| Field        | Type          | Null | Key | Default | Extra          |
+--------------+---------------+------+-----+---------+----------------+
| emplog_id    | int(11)       | NO   | PRI | NULL    | auto_increment |
| operate_type | char(20)      | YES  |     | NULL    |                |
| operate_user | char(50)      | YES  |     | NULL    |                |
| operate_time | datetime      | YES  |     | NULL    |                |
| emp_id       | int(11)       | YES  |     | NULL    |                |
| emp_name     | char(50)      | YES  |     | NULL    |                |
| birth        | date          | YES  |     | NULL    |                |
| salary       | decimal(10,2) | YES  |     | NULL    |                |
| comm         | decimal(10,2) | YES  |     | NULL    |                |
| phone        | char(20)      | YES  |     | NULL    |                |
| addr         | varchar(200)  | YES  |     | NULL    |                |
+--------------+---------------+------+-----+---------+----------------+
11 rows in set (0.01 sec)

二、為 emp 表創(chuàng)建觸發(fā)器

1、創(chuàng)建觸發(fā)器 trigger_after_insert_emp

在 emp 表中插入記錄時,把執(zhí)行插入操作的用戶名、操作類型(INSERT)、操作時間以及記錄的內容添加到操作日志表(emp_log)中。

DROP TRIGGER IF EXISTS `trigger_after_insert_emp`;

delimiter //
create trigger trigger_after_insert_emp
after insert on emp
for each row
begin
insert into emp_log(
    operate_type,
    operate_user,
    operate_time,
    emp_id,
    emp_name,
    birth,
    salary,
    comm,
    phone,
    addr
)
values(
    'INSERT',
    user(),
    now(),
    new.emp_id,
    new.emp_name,
    new.birth,
    new.salary,
    new.comm,
    new.phone,
    new.addr
);
end //
delimiter ;

2、創(chuàng)建觸發(fā)器 trigger_after_update_emp

在 emp 表中更新記錄時,把執(zhí)行更新操作的用戶名、操作類型(UPDATE)、操作時間以及更新之前記錄的內容添加到操作日志表(emp_log)中。

DROP TRIGGER IF EXISTS `trigger_after_update_emp`;

delimiter //
create trigger trigger_after_update_emp
after update on emp
for each row
begin
insert into emp_log(
    operate_type,
    operate_user,
    operate_time,
    emp_id,
    emp_name,
    birth,
    salary,
    comm,
    phone,
    addr
)
values(
    'UPDATE',
    user(),
    now(),
    old.emp_id,
    old.emp_name,
    old.birth,
    old.salary,
    old.comm,
    old.phone,
    old.addr
);
end //
delimiter ;

3、創(chuàng)建觸發(fā)器 trigger_after_delete_emp

在 emp 表中刪除記錄時,把執(zhí)行刪除操作的用戶名、操作類型(DELETE)、操作時間以及刪除之前記錄的內容添加到操作日志表(emp_log)中。

DROP TRIGGER IF EXISTS `trigger_after_delete_emp`;

delimiter //
create trigger trigger_after_delete_emp
after delete on emp
for each row
begin
insert into emp_log(
    operate_type,
    operate_user,
    operate_time,
    emp_id,
    emp_name,
    birth,
    salary,
    comm,
    phone,
    addr
)
values(
    'DELETE',
    user(),
    now(),
    old.emp_id,
    old.emp_name,
    old.birth,
    old.salary,
    old.comm,
    old.phone,
    old.addr
);
end //
delimiter ;

三、數(shù)據(jù)驗證

1、在 emp 中添加數(shù)據(jù)記錄

/*
insert into emp(emp_name,birth,salary,comm,phone,addr) 
values('劉紅','1988-12-3',5000,1200,'13673521212','河南省新鄉(xiāng)市'),
('王濤','1984-8-21',6000,700,'13755440012','河南省鄭州市'),
('張靜','1992-10-31',5500,800,'13073526644','河南省安陽市');
*/
mysql> insert into emp(emp_name,birth,salary,comm,phone,addr) 
    -> values('劉紅','1988-12-3',5000,1200,'13673521212','河南省新鄉(xiāng)市'),
    -> ('王濤','1984-8-21',6000,700,'13755440012','河南省鄭州市'),
    -> ('張靜','1992-10-31',5500,800,'13073526644','河南省安陽市');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

-- 查詢 emp 表中的數(shù)據(jù)
mysql> select * from emp;
+--------+----------+------------+---------+---------+-------------+--------------------+---------------------+---------------------+
| emp_id | emp_name | birth      | salary  | comm    | phone       | addr               | created_at          | updated_at          |
+--------+----------+------------+---------+---------+-------------+--------------------+---------------------+---------------------+
|      1 | 劉紅     | 1988-12-03 | 5000.00 | 1200.00 | 13673521212 | 河南省新鄉(xiāng)市       | 2022-12-04 15:40:08 | 2022-12-04 15:40:08 |
|      2 | 王濤     | 1984-08-21 | 6000.00 |  700.00 | 13755440012 | 河南省鄭州市       | 2022-12-04 15:40:08 | 2022-12-04 15:40:08 |
|      3 | 張靜     | 1992-10-31 | 5500.00 |  800.00 | 13073526644 | 河南省安陽市       | 2022-12-04 15:40:08 | 2022-12-04 15:40:08 |
+--------+----------+------------+---------+---------+-------------+--------------------+---------------------+---------------------+
3 rows in set (0.00 sec)

-- 查詢 emp_log 表中的數(shù)據(jù)
mysql> select * from emp_log;
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
| emplog_id | operate_type | operate_user   | operate_time        | emp_id | emp_name | birth      | salary  | comm    | phone       | addr               |
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
|         1 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      1 | 劉紅     | 1988-12-03 | 5000.00 | 1200.00 | 13673521212 | 河南省新鄉(xiāng)市       |
|         2 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      2 | 王濤     | 1984-08-21 | 6000.00 |  700.00 | 13755440012 | 河南省鄭州市       |
|         3 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      3 | 張靜     | 1992-10-31 | 5500.00 |  800.00 | 13073526644 | 河南省安陽市       |
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
3 rows in set (0.01 sec)

2、在 emp 中更新數(shù)據(jù)記錄

-- 更新 emp 表中的數(shù)據(jù)(更新了兩條記錄)
mysql> update emp set salary = salary + 1000 where salary < 6000;
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0

-- 查詢 emp 表中的數(shù)據(jù)
mysql> select * from emp;
+--------+----------+------------+---------+---------+-------------+--------------------+---------------------+---------------------+
| emp_id | emp_name | birth      | salary  | comm    | phone       | addr               | created_at          | updated_at          |
+--------+----------+------------+---------+---------+-------------+--------------------+---------------------+---------------------+
|      1 | 劉紅     | 1988-12-03 | 6000.00 | 1200.00 | 13673521212 | 河南省新鄉(xiāng)市       | 2022-12-04 15:40:08 | 2022-12-04 15:47:56 |
|      2 | 王濤     | 1984-08-21 | 6000.00 |  700.00 | 13755440012 | 河南省鄭州市       | 2022-12-04 15:40:08 | 2022-12-04 15:40:08 |
|      3 | 張靜     | 1992-10-31 | 6500.00 |  800.00 | 13073526644 | 河南省安陽市       | 2022-12-04 15:40:08 | 2022-12-04 15:47:56 |
+--------+----------+------------+---------+---------+-------------+--------------------+---------------------+---------------------+
3 rows in set (0.00 sec)

-- 查詢 emp_log 表中的數(shù)據(jù)
mysql> select * from emp_log;
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
| emplog_id | operate_type | operate_user   | operate_time        | emp_id | emp_name | birth      | salary  | comm    | phone       | addr               |
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
|         1 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      1 | 劉紅     | 1988-12-03 | 5000.00 | 1200.00 | 13673521212 | 河南省新鄉(xiāng)市       |
|         2 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      2 | 王濤     | 1984-08-21 | 6000.00 |  700.00 | 13755440012 | 河南省鄭州市       |
|         3 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      3 | 張靜     | 1992-10-31 | 5500.00 |  800.00 | 13073526644 | 河南省安陽市       |
|         4 | UPDATE       | root@localhost | 2022-12-04 15:47:56 |      1 | 劉紅     | 1988-12-03 | 5000.00 | 1200.00 | 13673521212 | 河南省新鄉(xiāng)市       |
|         5 | UPDATE       | root@localhost | 2022-12-04 15:47:56 |      3 | 張靜     | 1992-10-31 | 5500.00 |  800.00 | 13073526644 | 河南省安陽市       |
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
5 rows in set (0.01 sec)

3、在 emp 中刪除數(shù)據(jù)記錄

-- 刪除 emp 表中的數(shù)據(jù)(刪除了兩條記錄)
mysql> delete from emp where salary = 6000;
Query OK, 2 rows affected (0.02 sec)

-- 查詢 emp 表中的數(shù)據(jù)
mysql> select * from emp;
+--------+----------+------------+---------+--------+-------------+--------------------+---------------------+---------------------+
| emp_id | emp_name | birth      | salary  | comm   | phone       | addr               | created_at          | updated_at          |
+--------+----------+------------+---------+--------+-------------+--------------------+---------------------+---------------------+
|      3 | 張靜     | 1992-10-31 | 6500.00 | 800.00 | 13073526644 | 河南省安陽市       | 2022-12-04 15:40:08 | 2022-12-04 15:47:56 |
+--------+----------+------------+---------+--------+-------------+--------------------+---------------------+---------------------+
1 row in set (0.00 sec)

-- 查詢 emp_log 表中的數(shù)據(jù)
mysql> select * from emp_log;
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
| emplog_id | operate_type | operate_user   | operate_time        | emp_id | emp_name | birth      | salary  | comm    | phone       | addr               |
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
|         1 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      1 | 劉紅     | 1988-12-03 | 5000.00 | 1200.00 | 13673521212 | 河南省新鄉(xiāng)市       |
|         2 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      2 | 王濤     | 1984-08-21 | 6000.00 |  700.00 | 13755440012 | 河南省鄭州市       |
|         3 | INSERT       | root@localhost | 2022-12-04 15:40:08 |      3 | 張靜     | 1992-10-31 | 5500.00 |  800.00 | 13073526644 | 河南省安陽市       |
|         4 | UPDATE       | root@localhost | 2022-12-04 15:47:56 |      1 | 劉紅     | 1988-12-03 | 5000.00 | 1200.00 | 13673521212 | 河南省新鄉(xiāng)市       |
|         5 | UPDATE       | root@localhost | 2022-12-04 15:47:56 |      3 | 張靜     | 1992-10-31 | 5500.00 |  800.00 | 13073526644 | 河南省安陽市       |
|         6 | DELETE       | root@localhost | 2022-12-04 15:52:21 |      1 | 劉紅     | 1988-12-03 | 6000.00 | 1200.00 | 13673521212 | 河南省新鄉(xiāng)市       |
|         7 | DELETE       | root@localhost | 2022-12-04 15:52:21 |      2 | 王濤     | 1984-08-21 | 6000.00 |  700.00 | 13755440012 | 河南省鄭州市       |
+-----------+--------------+----------------+---------------------+--------+----------+------------+---------+---------+-------------+--------------------+
7 rows in set (0.00 sec)

到此這篇關于MySQL 使用觸發(fā)器記錄用戶的操作日志的文章就介紹到這了,更多相關mysql記錄用戶的操作日志內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解mysql跨庫查詢解決方案

    詳解mysql跨庫查詢解決方案

    本文主要介紹了mysql跨庫查詢解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • MySQL 獨立索引和聯(lián)合索引的選擇

    MySQL 獨立索引和聯(lián)合索引的選擇

    為了提高數(shù)據(jù)庫效率,建索引是家常便飯;那么當查詢條件為2個及以上時,我們是創(chuàng)建多個單列索引還是創(chuàng)建一個聯(lián)合索引好呢?他們之間的區(qū)別是什么?哪個效率高呢?本文將詳細測試分析下。
    2021-05-05
  • MySQL對varchar類型數(shù)字進行排序的實現(xiàn)方法

    MySQL對varchar類型數(shù)字進行排序的實現(xiàn)方法

    這篇文章主要介紹了MySQL對varchar類型數(shù)字進行排序的實現(xiàn)方法,文中用的是CAST方法,MySQL CAST()函數(shù)用于將值從一種數(shù)據(jù)類型轉換為另一種特定數(shù)據(jù)類型,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-04-04
  • mysql 5.7.16 免安裝版安裝配置方法圖文教程

    mysql 5.7.16 免安裝版安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 5.7.16 免安裝版安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • mysql sql大文件導入正確姿勢

    mysql sql大文件導入正確姿勢

    在 MySQL 中導入大文件時,mysql source 導入大文件速度太慢,可能會遇到性能問題或內存限制,以下是一些優(yōu)化導入大文件的建議,需要的朋友可以參考一下
    2025-02-02
  • 關于Mysql隔離級別、鎖與MVCC介紹

    關于Mysql隔離級別、鎖與MVCC介紹

    本篇文章給大家詳細介紹了一下關于Mysql隔離級別、鎖與MVCC的相關知識,有這方面興趣的朋友參考下。
    2018-01-01
  • mysql 5.7.24 安裝配置方法圖文教程

    mysql 5.7.24 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 5.7.24 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • MySQL如何快速創(chuàng)建800w條測試數(shù)據(jù)表

    MySQL如何快速創(chuàng)建800w條測試數(shù)據(jù)表

    這篇文章主要介紹了MySQL如何快速創(chuàng)建800w條測試數(shù)據(jù)表,下面文章圍繞MySQL創(chuàng)建測試數(shù)據(jù)表的相關資料展開詳細內容,具有一的的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • Mysql建表與索引使用規(guī)范詳解

    Mysql建表與索引使用規(guī)范詳解

    本篇文章是對Mysql建表和索引使用規(guī)范進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL中計算兩個日期的間隔天數(shù)方式

    MySQL中計算兩個日期的間隔天數(shù)方式

    文章介紹了在MySQL?5.7中計算兩個日期間隔天數(shù)的三種方法:DATEDIFF、TIMESTAMPDIFF和PERIOD_DIFF,并對比了它們的用途、參數(shù)和返回值類型
    2024-12-12

最新評論

波密县| 镇安县| 旺苍县| 衢州市| 临颍县| 浠水县| 惠州市| 武宁县| 建始县| 辛集市| 阿拉善左旗| 双鸭山市| 浦县| 长岛县| 宜阳县| 金昌市| 大姚县| 红河县| 越西县| 万盛区| 靖西县| 枝江市| 建始县| 汝阳县| 灌南县| 深州市| 四平市| 威宁| 刚察县| 商洛市| 廉江市| 黄平县| 寿光市| 尖扎县| 遂川县| 康乐县| 苍溪县| 彩票| 湛江市| 高陵县| 越西县|