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 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 建立觸發器,當對表進行插入和更新時,觸發 觸發器
delimiter2.3 插入操作|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 ;
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儲存引擎
create2.6.2 然後插入url和url_crc,例如table
`urls` (
`url`
varchar
(255
) default
null
,`url_crc`
int(
11)
default'0
',key`url` (`url`) using hash
) engine
=memory
default
charset
=utf8;
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 觸發器學習
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...
Mysql學習 觸發器
觸發器是一類特殊的事務,可以監視某種資料操作 insert delete update 並觸發相應操作 insert delete update 使用場景 1 當向一張表中新增或刪除記錄時,需要在相關表中進行同步操作 2 當表上某列資料的值與其他表中的資料有聯絡時。3 當需要對某張表進行跟蹤時 二 ...
mysql觸發器 學習
1.說明 觸發器的定義就是說某個條件成立的時候,你觸發器裡面所定義的語句就會被自動的執行。因此觸發器不需要人為的去呼叫,也不能呼叫。然後,觸發器的觸發條件其實在你定義的時候就已經設定好的了。這裡面需要說明一下,觸發器可以分為語句級觸發器和行級觸發器。簡單的說就是語句級的觸發器可以在某些語句執行前或執...