觸發器(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語句檢視觸發器...