1. 程式人生 > >mysql命令列和navicat工具插入、刪除觸發器寫法

mysql命令列和navicat工具插入、刪除觸發器寫法

 

 

親測新增資料庫中,新增a表中記錄,b表中相關資料跟隨變化。

提示:demiliter更換mysql結束符。由 ;變成$$(直接delimiter $$(直接回車))。

插入觸發器寫法:

mysql> create trigger tr2
    -> after insert on o
    -> for each row
    -> begin
    -> update g set num=num-new.much where gid=new.gid;
    -> end$$

資料庫結構(如下圖)

a\b表分別為g\o表資料

 

以下為執行mysql命令列測試資料(可借鑑)

mysql> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| source             |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> use source
Database changed
mysql> show tables
    -> ;
+------------------+
| Tables_in_source |
+------------------+
| db_score         |
| db_user          |
| g                |
| o                |
+------------------+
4 rows in set (0.00 sec)

mysql> select * from g;
+-----+--------+------+
| gid | name   | num  |
+-----+--------+------+
|   1 | 闉嬪瓙   |   25 |
|   2 | 澶栧   |   30 |
|   3 | 鎵嬪   |   40 |
|   4 | 瑁ゅ瓙   |   19 |
+-----+--------+------+
4 rows in set (0.00 sec)

mysql> select * from o;
+-----+------+------+
| oid | gid  | much |
+-----+------+------+
|   1 |    1 |    1 |
|   2 |    1 |    1 |
|   3 |    4 |    2 |
|   6 |    4 |    1 |
+-----+------+------+
4 rows in set (0.00 sec)

mysql> delimiter $$
mysql> select * from o;
    -> $$
+-----+------+------+
| oid | gid  | much |
+-----+------+------+
|   1 |    1 |    1 |
|   2 |    1 |    1 |
|   3 |    4 |    2 |
|   6 |    4 |    1 |
+-----+------+------+
4 rows in set (0.00 sec)

mysql> create trigger tr2
    -> after insert on o
    -> for each row
    -> begin
    -> update g set num=num-new.much where gid=new.gid;
    -> end$$
Query OK, 0 rows affected (0.11 sec)

mysql> insert o values(7,1,2)$$
Query OK, 1 row affected (0.10 sec)

mysql> select * from g
    -> $$
+-----+--------+------+
| gid | name   | num  |
+-----+--------+------+
|   1 | 闉嬪瓙   |   23 |
|   2 | 澶栧   |   30 |
|   3 | 鎵嬪   |   40 |
|   4 | 瑁ゅ瓙   |   19 |
+-----+--------+------+
4 rows in set (0.00 sec)

mysql>

以下為navicat觸發器呈現(可仿著寫)

 

刪除觸發器寫法(簡寫)

mysql> create trigger tr3
    -> after delete on o
    -> for each row
    -> begin
    -> update g set num=num-old.much where gid=old.gid;
    -> end$$

 

navicat刪除觸發器寫法