什麼是觸發器:
以我個人的理解就是:觸發器就是乙個方法,這個方法中儲存著有對錶操作的sql語句。其實觸發器也是是特殊的儲存過程,只不過觸發器需要乙個事件來推動它發生。過程有事件過程和通用過程,觸發器就屬於事件過程。
為什麼使用觸發器:
因為觸發器是特殊的儲存過程,那麼他必然也帶有一些儲存過程的優點。對於多表的複雜操作,他可以將這個複雜的操作進行封裝。同時還有一點點的不同就是,觸發器可通過資料庫中的相關表實現級聯(主鍵,外來鍵)更改。這樣就會帶來很多省事的地方。
如何使用觸發器:
sql
use [newssystem]
go/****** object: trigger [dbo].[tridelete] script date: 09/07/2014 14:29:44 ******/
set ansi_nulls on
goset quoted_identifier on
goalter trigger [dbo].[tridelete]
on [dbo].[category]
instead of delete
as begin
declare @caid int
select @caid=id from deleted
delete comment where newsid in(select newsid from news where caid =@caid )
----刪除新聞
delete news where caid =@caid
----刪除類別
delete category where id =@caid
end
同時還要注意的是,雖然觸發器和儲存過程很相像,但是觸發器的建立離不開表,而儲存過程的建立需要建立在庫下。
在d層**:
///
/// 只要說刪除第幾個就ok了
/// 返回boolean型
public boolean delete(string id)
;int res = sqlhelper.executenonquery(cmdtext, paras, commandtype.text);
if (res > 0)
return flag;
}在u層中要給乙個事件,比如說click事件去觸發這個方法的實現。這裡就不展示u層**,實際上在d層的**沒有改變,依舊是乙個刪除語句,不同的就是在sql中的觸發器的語句。
通過上次寫的儲存過程的d層**以及本次的觸發器的d層**,我們可以發現儲存過程中俄cmdtext這個鏈結字串知識乙個儲存過程的名稱,而觸發器的卻是和普通的sql增刪改語句相同的語句。這應該就是百科上的那句話:觸發器和儲存過程唯一區別是觸發器不能執行execute語句呼叫,而是在使用者執行transaction—sql語句時自動觸發執行。
觸發器的功能很強大,但是我們還是要謹慎的使用,如果各個地方都用到了觸發器,這樣會破壞資料的結構,給後期的維護都會帶來不便。
Web發布 牛腩新聞發布系統
最近實戰了乙個新聞發布系統,基本功能都已實現,最關鍵的是對其發布從而使更多的使用者使用到它,如何操作呢?請往下看 一 安裝iis iis是internet information services的縮寫,意為網際網路資訊服務,是由微軟公司提供的基於執行microsoft windows的網際網路基本...
牛腩新聞發布系統總結
用時半個月的時間,完車了牛老師的新聞發布系統,剛開始很是期待,因為這是第乙個做網頁的系統,有種說不說的欣喜。簡單的做了個圖,如下圖 和c s 的系統相比,不同之處就在於表示層了。因為是b s 的系統,是通過瀏覽器,讓使用者瀏覽的,所以所有的展示都是通過瀏覽器的解析,以及與伺服器的請求和返回來完成任務...
牛腩新聞發布系統總結
好喜歡牛老師,咳咳咳廣西南寧人,加快速度不到2倍,聽著感覺是小羅的聲音呵呵,願意聽牛老師的聲音,跟著節奏走。牛腩看了20多天,整個過程下來,豁然開朗 神奇清爽。終於邁進web開發的門檻,再一次經歷除機房收費系統之外的軟體開發流程,而且是b s模式的開發,有了小小的認識。製作牛腩的過程,顛覆了我以往的...