Mysql學習歷程(18) 觸發器

2021-08-03 16:34:41 字數 1257 閱讀 8669

觸發器:trigger 事先為某張表繫結好一段**  當表中某些內容發生改變的時候(增刪改),系統會自動觸發**執行

事件型別(增刪改) insert,delete,update

觸發事件(before,after)

觸發物件:表中每一條記錄

最多一張錶能有6個觸發器;

建立觸發器

mysql中沒有大括號,都是用對應字元符號來替代;

觸發器基本語法:

-- 臨時修改語句結束符

delimiter  自定義符號   -- 後續**只有碰到自定義符號才算結束

create trigger 觸發器名字  觸發時間    事件型別  on  表名   for each row

begin  --  代表左大括號:開始

-- 裡面就是觸發器內容 每行以語句結束符;

end   --  代表右大括號:結束

--  語句結束符

自定義符號

-- 將臨時修正改過來

delimiter  ;

檢視觸發器或模糊匹配 show triggers  [ like 'pattern' ]

檢視觸發器建立語句  show create trigger 觸發器名字;

所有觸發器都會儲存在一張表中information_schema.triggers

觸發器不能修改,只能先刪除後新增;

drop  trigger 觸發器名字;

觸發器記錄:不管觸發器是否被觸發,只要當某種操作準備執行,系統就會將當前要操作的記錄的當前狀態和即將執行之後的新的狀態給分別保留下來,供觸發器使用

要操作的當前狀態儲存到old中,操作之後可能形態儲存給new

old代表的是舊記錄,new代表的是新記錄;刪除的時候是沒有new的,插入的時候是沒有old的;

old和new都是代表記錄本身,任何一條記錄除了資料還有欄位名字,使用方式:old.欄位名  /new.欄位名;  new代表假設發生之後的結果

如果觸發器內部只有一條要執行的sql指令,可以省略大括號begin和end

delimiter $$

create trigger after_order after insert on t_order for each row

begin

update t_product set total :=total-new.amount where id=new.pid;

end

$$delimiter ;

觸發器 mysql觸發器

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

Mysql學習 觸發器

觸發器是一類特殊的事務,可以監視某種資料操作 insert delete update 並觸發相應操作 insert delete update 使用場景 1 當向一張表中新增或刪除記錄時,需要在相關表中進行同步操作 2 當表上某列資料的值與其他表中的資料有聯絡時。3 當需要對某張表進行跟蹤時 二 ...

mysql 觸發器學習

mysql 觸發器學習 1.乙個簡單的例子 1.1.建立表 create table t s1 integer 1.2.觸發器 delimiter create trigger t trigger before insert on t for each row begin set x hello t...