觸發器和儲存過程

2022-08-30 16:00:23 字數 1705 閱讀 4073

觸發器用處還是很多的,比如校內網、開心網、facebook,你發乙個日誌,自動通知好友,其實就是在增加日誌時做乙個後觸發,再向通知表中寫入條目。因為觸發器效率高。而uch沒有用觸發器,效率和資料處理能力都很低。

儲存過程的實驗步驟:

mysql> delimiter |

mysql> create procedure insertarticle_procedure (ptitle varchar(50),pbid int,out

pid int)

-> begin

-> insert into article1value(null,ptitle,pbid);

-> select max(id) into pid fromarticle1;

-> end;

-> |

query ok, 0 rows affected (0.05sec)

mysql> callinsertarticle_procedure('傳智播客',1,@pid);

-> |

query ok, 0 rows affected (0.00sec)

mysql> delimiter ;

mysql> select @pid;

+------+

| @pid |

+------+

| 3 |

+------+

1 row in set (0.00 sec)

mysql> select * fromarticle1;

+----+--------------+------+

| id | title | bid |

+----+--------------+------+

| 1 | test | 1 |

| 2 | chuanzhiboke | 1 |

| 3 | 傳智播客 | 1 |

+----+--------------+------+

3 rows in set (0.00 sec)

觸發器的實驗步驟:

create table board1(id intprimary key auto_increment,name varchar(50),ar

ticlecount int);

create table article1(id intprimary key auto_increment,title varchar(50)

,bid int referencesboard1(id));

delimiter |

create triggerinsertarticle_trigger after insert on article1 for each ro

w begin

-> update board1 setarticlecount=articlecount+1 where id= new.bid;

-> end;

-> |

delimiter ;

insert into board1 value(null,'test',0);

insert into article1value(null,'test',1);

還有,每插入乙個帖子,都希望將版面表中的最後發帖時間,帖子總數字段進行同步更新,用觸發器做效率就很高。下次課設計這樣乙個案例,寫觸發器時,對於最後發帖時間可能需要用declare方式宣告乙個變數,或者是用new.posttime來生成。

儲存過程和觸發器

儲存過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。簡單的敘述 在大型資料庫系統中,儲存過程和觸發器具有很重要的作用。無論是儲存過程還是觸發器,都是s...

儲存過程和觸發器

1 什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要...

儲存過程和觸發器 啟用和禁用觸發器

有的情況下可能需要臨時禁用觸發器,比如他引用的資料庫物件已經失效,或者需要執行大量的資料操作 此時不希望觸發器工作,以避免造成延時等等 alter trigger disable 禁用某個觸發器 alter trigger enable 啟用某個觸發器 alter table disable all...