日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表)

發布時間:2025/3/20 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是觸發器

觸發器是與表有關的數據庫對象,在滿足定義條件時觸發,并執行觸發器中定義的語句集合。觸發器的這種特性可以協助應用在數據庫端確保數據的完整性。

舉個例子,比如你現在有兩個表【用戶表】和【日志表】,當一個用戶被創建的時候,就需要在日志表中插入創建的log日志,如果在不使用觸發器的情況下,你需要編寫程序語言邏輯才能實現,但是如果你定義了一個觸發器,觸發器的作用就是當你在用戶表中插入一條數據的之后幫你在日志表中插入一條日志信息。當然觸發器并不是只能進行插入操作,還能執行修改,刪除

觸發器的事件:事件就是比如insert是插入指令,這時候只要定義好insert,那么就會在插入時候觸發,其他的update等操作不會觸發

# 插入前

CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW

BEGIN

...

END

# 插入后

CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW

BEGIN

...

END

# 刪除前

CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW

BEGIN

...

END

# 刪除后

CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW

BEGIN

...

END

# 更新前

CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW

BEGIN

...

END

# 更新后

CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW

BEGIN

...

END

創建觸發器的語法如下:

CREATE TRIGGER 觸發器名字 BEFORE DELETE?ON 觸發表的名字 FOR EACH ROW

BEGIN

insert into user_log (列名) values ('值');

END

trigger_name:觸發器的名稱

tirgger_time:觸發時機,為BEFORE或者AFTER

trigger_event:觸發事件,為INSERT、DELETE或者UPDATE

tb_name:表示建立觸發器的表明,就是在哪張表上建立觸發器

trigger_stmt:觸發器的程序體,可以是一條SQL語句或者是用BEGIN和END包含的多條語句

所以可以說MySQL創建以下六種觸發器:

1、BEFORE INSERT

2、BEFORE DELETE

3、BEFORE UPDATE

4、AFTER INSERT

5、AFTER DELETE

6、AFTER UPDATE

修改終止符

創建觸發器實例:

DROP TRIGGER 觸發器名字? #刪除觸發器

show triggers \G;? #查看觸發器的指令

*************************** 1. row ***************************

Trigger: userlog? #觸發器的名字

Event: INSERT? #什么操作下觸發,也就是監聽的事件

Table: user? #觸發表的名字

Statement: BEGIN? ?#觸發器的開始

insert into user_log (name) values ('xxxxx');? #sql指令

END? #觸發器結束

Timing: BEFORE

Created: NULL

sql_mode: NO_ENGINE_SUBSTITUTION

Definer: root@localhost

character_set_client: utf8mb4

collation_connection: utf8mb4_general_ci

Database Collation: latin1_swedish_ci

*************************** 2. row ***************************

Trigger: demo

Event: DELETE

Table: user

Statement: BEGIN

insert into user_log (name) values ('xxxx');

END

Timing: BEFORE

Created: NULL

sql_mode: NO_ENGINE_SUBSTITUTION

Definer: root@localhost

character_set_client: gbk

collation_connection: gbk_chinese_ci

Database Collation: latin1_swedish_ci

2 rows in set (0.01 sec)

總結

以上是生活随笔為你收集整理的MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。