觸發器 事務

2022-09-15 14:18:12 字數 2140 閱讀 7221

觸發器:

觸發器為特殊型別的儲存過程,可在執行語言事件時自動生效。sql server 包括三種常規型別的觸發器:dml 觸發器、ddl 觸發器和登入觸發器。

當伺服器或資料庫中發生資料定義語言 (ddl) 事件時將呼叫 ddl 觸發器。登入觸發器將為響應 logon 事件而激發儲存過程。與 sql server 例項建立使用者會話時將引發此事件。      

當資料庫中發生資料操作語言 (dml) 事件時將呼叫 dml 觸發器。dml 事件包括在指定表或檢視中修改資料的 insert 語句、update 語句或 delete 語句。dml 觸發器可以查詢其他表,還可以包含複雜的 transact-sql 語句。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待。如果檢測到錯誤(例如,磁碟空間不足),則整個事務即自動回滾。

主要講述dml觸發器,dml觸發器有兩種:after(for),instead of觸發器,同時dml 觸發器使用 deleted 和 inserted 邏輯(概念)表。 它們在結構上類似於定義了觸發器的表,即對其嘗試執行了使用者操作的表。 在 deleted 和 inserted 表儲存了可能會被使用者更改的行的舊值或新值。

對於insert 操作,inserted保留新增的記錄,deleted無記錄

對於delete 操作,inserted無記錄,deleted保留被刪除的記錄

對於update操作,inserted保留修改後的記錄,deleted保留修改前的記錄

示例一:delete觸發器的建立和執行,用的instead of

示例二:執行刪除一條資料,用deleted來表示被刪除的那條資料,從中獲取

示例三:insert新增一條資料,inserted表示新新增的資料,從中獲取教師編號,並且根據教師編號來檢視是男是女,調換男女。

示例四:在忘記觸發器的名字時,可以通過下面的語句來進行禁用或啟用觸發器。

資料庫事務:

資料庫事務(database transaction) 是指作為單個邏輯工作單元執行的一系列操作。

事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。

設想網上購物的一次交易,其付款過程至少包括以下幾步資料庫操作:

更新客戶所購商品的庫存資訊

儲存客戶付款資訊--可能包括與銀行系統的互動

生成訂單並且儲存到資料庫中   · 更新使用者相關資訊,例如購物數量等等 正常的情況下,這些操作將順利進行,最終交易成功,與交易相關的所有資料庫資訊也成功地更新。但是,如果在這一系列過程中任何乙個環節出了差錯,例如在更新商品庫存資訊時發生異常、該顧客銀行帳戶存款不足等,都將導致交易失敗。一旦交易失敗,資料庫中所有資訊都必須保持交易前的狀態不變,比如最後一步更新使用者資訊時失敗而導致交易失敗,那麼必須保證這筆失敗的交易不影響資料庫的狀態--庫存資訊沒有被更新、使用者也沒有付款,訂單也沒有生成。否則,資料庫的資訊將會一片混亂而不可**。

資料庫事務正是用來保證這種情況下交易的平穩性和可**性的技術。

begin tran (或transaction)  --開始事務

commit                               --提交事務

rollback                               --回滾事務

事務特性:

a原子性(atomicity)

c一致性(consistency)

i隔離性(isolation)

d永續性(durability)

@@error 是判斷事務有沒有錯的條件,無錯時值為0,有錯時值不為0。

事務建立以及使用示例:

觸發器 事務

觸發器 業務是緊密相連的,不可分割的,可以使用觸發器 觸發器的四個要素 1.監視地點 2.監視事件 3.觸發時間 4.觸發事件 after 在之後,當我監視事件發生增刪改以後,進行觸發 before 先完成觸發,再進行增刪改。監視事件之前 建立觸發器的語法 create trigger 觸發器名稱 ...

觸發器 事務

觸發器的關鍵字為trigger,分為inserted 和 deleted 理解觸發器裡面的兩個臨時的表 deleted inserted 注意deleted 與inserted分別表示觸發事件的表 舊的一條記錄 和 新的一條記錄 乙個資料庫系統中有兩個虛擬表用於儲存在表中記錄改動的資訊,分別是 in...

事務與觸發器A

事務 具有統一性的過程。可以新增for update來限制併發更新。主要由commit和rollback組成,他們不可同時有序執行。觸發器 不允許有引數。對於表加上約束,審計表的資訊。資料操作源觸發器,它建立在表的基礎之上。行級觸發器 例如建立刪除觸發器 create or replace trig...