觸發器 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 表名...