MySQL觸發器概念 原理與用法

2021-10-14 19:46:16 字數 4995 閱讀 4961

觸發器(trigger)是mysql提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作(insert,delete, update)時就會啟用它執行。

簡言之:你執行一條sql語句,這條sql語句的執行會自動去觸發執行其他的sql語句。

1.(監視地點(table)

監視事件(insert/update/delete)

觸發時間(after/before)

觸發事件(insert/update/delete)

檢視已有觸發器:show triggers

刪除已有觸發器:drop trigger triggername

建立觸發器:create trigger triggername

create

trigger tr_article_detail_info_insert before insert

on db_jkgg.article_detail_info for each row

begin

set new.view_number = floor(

200+

(rand()*

501));

end;

版本:mysql5以上內容管理系統有這樣乙個需求,當新增一篇資訊文章時候,同時生成乙個隨機的瀏覽數量。

-- 資訊文章的表結構

create

table

`article_detail_info`

(`article_id`

int(11)

notnull

auto_increment

,`keywords`

varchar

(1024

)collate utf8mb4_unicode_ci default

null

comment

'關鍵字'

,`description`

varchar

(5000

)collate utf8mb4_unicode_ci default

null

comment

,`article_url`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

'文章的url'

,`author`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

'作者'

,`title`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

'標題'

,`source`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

'**'

,`image`

varchar

(1024

)collate utf8mb4_unicode_ci default

null

comment

'主',

`create_time`

datetime

default

null

comment

'建立時間'

,`update_time`

datetime

default

null

comment

'更新時間'

,`view_number`

int(11)

default

'0'comment

'瀏覽量'

,`share_view`

int(11)

default

'0'comment

'分享量'

,`attribute`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

,`audit_status`

tinyint(11

)default

null

comment

'審核狀態 1 待審核 2 審核通過 3 審核不通過'

,`static_file_url`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

'靜態化後檔案儲存路徑'

,`is_delete`

tinyint(4

)default

'1'comment

'刪除 0 刪除 1 未刪除'

,`is_top`

tinyint(4

)default

'0'comment

'是否指定 0 正常 1 置頂'

,`tags`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

'標籤'

,`is_original`

tinyint(4

)default

'0'comment

'是否原創 0 不是 1是'

,`is_hpr`

tinyint(4

)default

'0'comment

'是否首頁推薦 0 否 1是'

,`is_vedio`

tinyint(4

)default

'0'comment

,`vedio_url`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

,`vedio_cover_url`

varchar

(255

)collate utf8mb4_unicode_ci default

null

comment

,primary

key(

`article_id`))

engine

=innodb

auto_increment

=822

default

charset

=utf8mb4 collate

=utf8mb4_unicode_ci comment

='文章詳情'

;

-- 為表article_detail_info建立觸發器 自動生成200-500的隨機數作為瀏覽量

create

trigger

`tr_article_detail_info_insert` before insert

on`article_detail_info`

for each row

begin

set new.view_number = floor(

200+

(rand()*

501));

end;

6.3.1 插入資料
insert

into

`db_jkgg`

.`article_detail_info`

(`keywords`

,`description`

,`article_url`

,`author`

,`title`

,`source`

,`image`

,`create_time`

,`update_time`

,`share_view`

,`attribute`

,`audit_status`

,`static_file_url`

,`is_delete`

,`is_top`

,`tags`

,`is_original`

,`is_hpr`

,`is_vedio`

,`vedio_url`

,`vedio_cover_url`

)values

(null

,null

,'/article/20181116/content-819.html'

,'宋'

,'尿酸其實並不神秘'

,'痛風'

,null

,'2018-11-16 15:22:35'

,null

,'0'

,null

,'0'

,null

,'1'

,'0'

,null

,'0'

,'0'

,'1'

,null

,null

);

6.3.2 檢視資料庫已經生成瀏覽量
select article_id,title,view_number from article_detail_info order

by article_id desc

limit

1

生成乙個條記錄並且瀏覽量是292

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

my sql 觸發器 mysql建立觸發器

首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...

my sql 觸發器 MySQL檢視觸發器

檢視觸發器是指檢視資料庫中已經存在的觸發器的定義 狀態和語法資訊等。mysql 中檢視觸發器的方法包括 show triggers 語句和查詢 information schema 資料庫下的 triggers 資料表等。本節將詳細介紹這兩種檢視觸發器的方法。show triggers語句檢視觸發器...