MYSQL 觸發器簡單了解

2022-03-12 14:09:34 字數 1685 閱讀 8011

觸發器 trigger

1、觸發器是指事先為某張表繫結一段**,當表中某些內容發生改變(增insert、刪delete、改update)時,系統自動觸發繫結的那段**並執行。比如 一旦訂單表裡插入新訂單,商品的庫存數自動減n.

2、觸發器的三要素:

事件因素:insert、刪delete、改update

觸發物件:表中每條記錄,即整個表

那麼每張表可以有6個觸發器(增、刪、改3個事件的前和後)

3、建立觸發器

delimiter--自定義符號

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

begin--觸發器內容的開始

---觸發器內容主體

end--觸發器內容結束

delimiter.--恢復語句結束符

4、以商品表goods  和訂單表odrer舉例說明觸發器,sql語句如下:

建立商品表:

create table goods(

in int primary auto_increment,

name varchar(20) not null,----- not null:意思是不允許給這個字段插入空值

price decimal(10,2)  default 0,------------decimal一種資料型別,decimal(5,2)表示一共5位數,小數字2位,整數字5-2位

default:當沒有給此字段插入值時,預設給的值

inventory int comment '商品庫存量'-----comment  類似注釋,備註說明的意思

create table goods( id int primary key auto_increment, name varchar(20) not null, price int, inventory int );

插入商品:

建立訂單表

create table orders (id int primary key auto_increment, good_id int,good_num int);

建立觸發器

delimiter $$--臨時修改語句結束符

create trigger after_order after insert on orders for each row

begin---觸發器主體內容開始

update goods set invenment=invenment-1 where id=1;--觸發器主體內容,每行要以分號;結束

end---觸發器主體內容結束

$$--結束語句

deloimiter;恢復語句結束符

使用觸發器

由結果可以看出,在給訂單表新增一條記錄後,商品表中對應的商品庫存數減了1(先不管數量應該減10)

觸發器的觸發物件和事件型別,一定不能和觸發主體相同,否則容易造成死迴圈

觸發器 mysql觸發器

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

MySQL 觸發器簡單例項

mysql 觸發器簡單例項 語法 create trigger 觸發器名稱 觸發器必須有名字,最多64個字元,可能後面會附有分隔符.它和mysql中其他物件的命名方式基本相象.觸發器有執行的時間設定 可以設定為事件發生前或後。同樣也能設定觸發的事件 它們可以在執行insert update或dele...

MySQL 觸發器簡單例項

語法 create trigger 觸發器名稱 觸發器必須有名字,最多64個字元,可能後面會附有分隔符.它和mysql中其他物件的命名方式基本相象.觸發器有執行的時間設定 可以設定為事件發生前或後。同樣也能設定觸發的事件 它們可以在執行insert update或delete的過程中觸發。on 表名...