1、先創(chuàng)建一個空的person_log表用來存放被刪除的記錄。
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了安多免費建站歡迎大家使用!
2、創(chuàng)建一個觸發(fā)器del_person,執(zhí)行刪除操作后將記錄插入到person_log表。
觸發(fā)器person_log
3、從person表中執(zhí)行刪除記錄操作來觸發(fā)事件
4、查看person_log表結(jié)果:
結(jié)果:從person表執(zhí)行刪除一條記錄后會觸發(fā)person_log表中增加被刪除的記錄。
語法說明如下。
1) 觸發(fā)器名
觸發(fā)器的名稱,觸發(fā)器在當前數(shù)據(jù)庫中必須具有唯一的名稱。如果要在某個特定數(shù)據(jù)庫中創(chuàng)建,名稱前面應該加上數(shù)據(jù)庫的名稱。
2) INSERT | UPDATE | DELETE
觸發(fā)事件,用于指定激活觸發(fā)器的語句的種類。
注意:三種觸發(fā)器的執(zhí)行時間如下。INSERT:將新行插入表時激活觸發(fā)器。例如,INSERT 的 BEFORE 觸發(fā)器不僅能被 MySQL 的 INSERT 語句激活,也能被 LOAD DATA 語句激活。DELETE: 從表中刪除某一行數(shù)據(jù)時激活觸發(fā)器,例如 DELETE 和 REPLACE 語句。UPDATE:更改表中某一行數(shù)據(jù)時激活觸發(fā)器,例如 UPDATE 語句。
3) BEFORE | AFTER
BEFORE 和 AFTER,觸發(fā)器被觸發(fā)的時刻,表示觸發(fā)器是在激活它的語句之前或之后觸發(fā)。若希望驗證新數(shù)據(jù)是否滿足條件,則使用 BEFORE 選項;若希望在激活觸發(fā)器的語句執(zhí)行之后完成幾個或更多的改變,則通常使用 AFTER 選項。
4) 表名
與觸發(fā)器相關聯(lián)的表名,此表必須是永久性表,不能將觸發(fā)器與臨時表或視圖關聯(lián)起來。在該表上觸發(fā)事件發(fā)生時才會激活觸發(fā)器。同一個表不能擁有兩個具有相同觸發(fā)時刻和事件的觸發(fā)器。例如,對于一張數(shù)據(jù)表,不能同時有兩個 BEFORE UPDATE 觸發(fā)器,但可以有一個 BEFORE UPDATE 觸發(fā)器和一個 BEFORE INSERT 觸發(fā)器,或一個 BEFORE UPDATE 觸發(fā)器和一個 AFTER UPDATE 觸發(fā)器。
5) 觸發(fā)器主體
觸發(fā)器動作主體,包含觸發(fā)器激活時將要執(zhí)行的 MySQL 語句。如果要執(zhí)行多個語句,可使用 BEGIN…END 復合語句結(jié)構(gòu)。
主要的就是數(shù)據(jù)的截取吧,在家判斷就可以了
CREATE TRIGGER trigger1
AFTER insert ON AAA
FOR EACH ROW
BEGIN
insert INTO BBB
(a, b, c, d)
values substr
('this\is\a\test', 1, instr('this\is\a\test', '\', 1, 1) - 1),
substr
('this\is\a\test',
instr('this\is\a\test', '\', -1, 3) + 1,
instr('this\is\a\test', '\', -1, 2) -
(instr('this\is\a\test', '\', -1, 3) + 1)),
(substr('this\is\a\test',
instr('this\is\a\test', '\', -1, 2) + 1,
instr('this\is\a\test', '\', -1, 1) -
(instr('this\is\a\test', '\', -1, 2) + 1)),
substr(NEW :aa, instr(NEW :aa, '\', -1, 1) + 1, length(NEW :aa)));
END;
--觸發(fā)器如果存在則刪除重新創(chuàng)建
DROP?TRIGGER?IF?EXISTS?觸發(fā)器名稱;
CREATE?TRIGGER?觸發(fā)器名稱?
AFTER?INSERT?ON?表名稱
FOR?EACH?ROW
BEGIN
--這里寫你觸發(fā)器觸發(fā)時要做的
UPDATE?lsxhd?
SET?ywrq=UNIX_TIMESTAMP(FROM_UNIXTIME(rq,?"%Y-%m-%d"))
WHERE
ywrq=UNIX_TIMESTAMP('1970-01-01')--如果這里的‘1970-01-01’是插入的數(shù)據(jù)中的列值的話,可以從INSERTED中查詢出
END;
觸發(fā)器是一個特殊的存儲過程,存儲過程是需要手動調(diào)用的,而觸發(fā)器是程序自動出發(fā)的,比如在對某張表進行刪除操作前執(zhí)行觸發(fā)器??梢栽O置在增刪除操作前或者之后執(zhí)行。下面就創(chuàng)建一個小例子。
方法/步驟
確認mysql服務開啟。
連接mysql。
進入到相應的數(shù)據(jù)庫,并查看相應表的數(shù)據(jù)。
創(chuàng)建觸發(fā)器,當在向表t_user插入之前,向表user插入數(shù)據(jù)。
插入一條語句。
6
查看觸發(fā)器是否執(zhí)行。
delimiter //
create trigger upd_a
after insert on table_b
for each row
begin
if
new.收費單號 like 'Y%'
then
update table_a set table_a.編號 =1 where table_a.操作員id = new.收費員id and table_a.編號 1 ;
end if;
end//
delimiter ;
新聞名稱:mysql怎么寫觸發(fā)器 mysql的觸發(fā)器怎么用
本文地址:http://chinadenli.net/article28/dodepjp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、做網(wǎng)站、App設計、全網(wǎng)營銷推廣、企業(yè)建站、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)