去年接觸觸發器的時候一頭霧水,現在也算有了個大概的了解。就像的自考一樣,學習真的是乙個需要反覆的過程,從陌生到熟悉這是乙個過程。一、基本概念
觸發器是一種特殊型別的儲存過程,它不同於普通的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名稱而被直接呼叫。當往某乙個**中插入記錄、修改記錄或者刪除記錄時,
sql server
就會自動執行觸發器所定義的
sql語句,以確保資料的完整性。
二、作用
就我的理解,觸發器的主要作用是用來保證資料的完整性。
①它可以級聯修改資料庫中相關的表。比如學生充值,更新充值表後,卡表中的餘額資訊也要更新。
②執行複雜的約束操作。在觸發器中可以書寫複雜的t-sql語句,並使用if...else等語句做一些複雜的判斷。
③跟蹤變化,對不符合條件的做回滾處理。例如:若想規定每次工資的變動幅度不能超過40%,使用觸發器,可以將修改後的表資料和修改前的表資料進行比較,若超出40%,可以回滾該修改操作。
④呼叫儲存過程。為了響應資料庫更新,觸發器可以呼叫乙個或多個儲存過程。
三、缺點
觸發器的效能通常比較低。我們在刪除表或者插入表總是位於記憶體中,而觸發器在執行過程中的參照表既不在記憶體中也不在資料庫裝置上,所以執行起來話費的時間比較長。
四、型別
update觸發器:在表上進行更新操作時觸發。
insert
觸發器:在表上進行插入操作時觸發
delete觸發器:在表上進行刪除操作時觸發
instead of觸發器:不執行插入、更新或刪除操作時,將觸發instead of 觸發器。
after觸發器:在乙個觸發動作發生之後激發,並提供一種機制以便控制多個觸發器的執行順序。
五、觸發器的使用
①建立
[sql]view plain
copy
?create
trigger trigger_name --觸發器的名字
ontable|view
--與使用者建立的觸發器相關聯的表的名字
--指明哪種資料操作將啟用觸發器
assql_statements --要執行的sql語句
create trigger trigger_name --觸發器的名字
on table|view --與使用者建立的觸發器相關聯的表的名字
--指明哪種資料操作將啟用觸發器
as sql_statements --要執行的sql語句
②修改
[sql]view plain
copy
?alter
trigger trigger_name --觸發器的名字
ontable|view
--與使用者建立的觸發器相關聯的表的名字
--指明哪種資料操作將啟用觸發器
assql_statements --要執行的sql語句
alter trigger trigger_name --觸發器的名字
on table|view --與使用者建立的觸發器相關聯的表的名字
--指明哪種資料操作將啟用觸發器
as sql_statements --要執行的sql語句
注:就是建立觸發器的語句中的create換為alter,其餘部分完全相同。但是在alter trigger中引用的觸發器名必須是已經存在的觸發器名③刪除
[sql]view plain
copy
?drop
trigger trigger_name [,…n]
drop trigger trigger_name [,…n]
下面是乙個重構機房中的乙個小例子,在更新充值記錄表的時候同時更新卡表中的餘額。
[sql]view plain
copy
?alter
trigger [dbo].[tr_updatemoney]
on [dbo].[t_recharge]
after
insert
asdeclare @addmoney decimal(18,2),@card_id varchar(11)--宣告變數
select @addmoney =addmoney,@card_id =card_id from inserted--inserted是系統自動建立的臨時表
update t_card set money =@addmoney+money where card_id =@card_id--執行sql語句
sql server中觸發器
觸發器是一種特殊型別的儲存過程,它不同於之前的我們介紹的儲存過程。觸發器主要是通過事件進行觸發被自動呼叫執行的。而儲存過程可以通過儲存過程的名稱被呼叫。什麼是觸發器 觸發器對錶進行插入 更新 刪除的時候會自動執行的特殊儲存過程。觸發器一般用在check約束更加複雜的約束上面。觸發器和普通的儲存過程的...
SQLSERVER的觸發器
觸發器的定義 觸發器是一種特殊型別的儲存過程,他不同於前面介紹過的一般的儲存過程 在sql內部把觸發器看做是儲存過程但是不能傳遞引數 一般的儲存過程通過儲存過程名稱被直接呼叫,而觸發器主要是通過事件進行觸發而被執行.總的來說,觸發器是一種功能強大的工具,在表中資料發生變化時自動強制執行,觸發器還可以...
sqlserver 中 觸發器的寫法
插入時執行觸發器 set ansi nulls on set quoted identifier on gocreate trigger dbo rscopeninsert on dbo rsc info for insert asdeclare v rscid varchar 50 v statu...