mysql 觸發器學習

2022-03-29 08:37:56 字數 2922 閱讀 3490

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 trigger";

set new.s1 = 55;

end;

|

1.3. 如果觸發器建立錯誤,可能只能刪除了,至少我試過不能replace

drop trigger t_trigger;

1.4. 當執行insert 時:

insert into t values(1);

1.5. 會執行觸發器t_trigger

select @x,t.* from t; 

1.6. 可以看到結果:

1.7可以使用 show triggers; 檢視新建的觸發器

2. url查詢雜湊值的維護 觸發器

2.1 建立表 pseudohash。

2.2 建立觸發器,當對表進行插入和更新時,觸發 觸發器

delimiter 

|create

trigger

pseudohash_crc_ins before

insert

onpseudohash

foreach row

begin

set@x

="hello

trigger

";set

new.url_crc

=crc32(new.url);

end;

|create

trigger

pseudohash_crc_upd before

update

onpseudohash

foreach row

begin

set@x

="hello

trigger

";set

new.url_crc

=crc32(new.url);

end;

|delimiter ;

2.3 插入操作

insert into pseudohash(url) values("");

insert into pseudohash(url) values("");

2.4 檢視表中資料(是進行更新操作之後的資料)

2.5 更新

update pseudohash set url = 'www.163.com' where id = 1;

可以看到的是,插入和更新操作後,他們的 url_crc是不同的 

2.6  上面源於乙個 對於url建立索引的例子,還有一種建立索引的方式: 在b+ 樹上建立乙個偽索引,和真正的索引不同,它還是在b+樹 索引上進行查詢,但是,使用的是 鍵的雜湊值進行查詢,而不是鍵本身,這樣會加快查詢

2.6.1 建立urls 表,注意使用的是 memory儲存引擎

create

table

`urls` (

`url`

varchar

(255

) default

null

,`url_crc`

int(

11)

default'0

',key`url` (`url`) using hash

) engine

=memory

default

charset

=utf8;

2.6.2 然後插入url和url_crc,例如

insert into urls values('www.gougou.com',crc32('www.gougou.com'));

像上面的那樣,或者使用觸發器

2.6.3 然後查詢的時候使用 hash索引查詢

上面3個查詢結果當然是一樣的,但是速度上hash的快很多

3. 觸發器 語法

on tbl_name for each row trigger_stmt

·             insert:將新行插入表時啟用觸發程式,例如,通過insert、load data和replace語句。

· update:更改某一行時啟用觸發程式,例如,通過update語句。

· delete:從表中刪除某一行時啟用觸發程式,例如,通過delete和replace語句。

3.2 可能遇到的問題

(允許儲存程式通過引數將資料返回觸發程式)。

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