freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

[計算機]第10章存儲過程與觸發(fā)器(編輯修改稿)

2024-11-15 03:48 本頁面
 

【文章內容簡介】 tr_employee CREATE TRIGGER tr_employee ON employee FOR DELETE AS DECLARE @msg varchar(50) SELECT @msg=STR(@@ROWCOUNT)+39。個員工被刪除 39。 SELECT @msg RETURN 創(chuàng)建觸發(fā)器 (2)執(zhí)行觸發(fā)器 tr_employee ? 觸發(fā)器不能通過名字來執(zhí)行,而是在相應的 SQL語句被執(zhí)行時自動觸發(fā)的。 ? 例如執(zhí)行以下 DELETE語句: DELETE FROM employee WHERE employee_name = 39。劉葉 39。 創(chuàng)建觸發(fā)器 ? 在觸發(fā)器的執(zhí)行過程中, SQL Server建立和管理兩個臨時的虛擬表: Deleted表和 Inserted表。這兩個表包含了在激發(fā)觸發(fā)器的操作中插入或刪除的所有記錄。可以用這一特性來測試某些數(shù)據(jù)修改的效果,以及設置觸發(fā)器操作的條件。這兩個特殊表可供用戶瀏覽,但是用戶不能直接改變表中的數(shù)據(jù)。 ? 在執(zhí)行 INSERT或 UPDATE語句之后所有被添加或被更新的記錄都會存儲在 Inserted表中。 ? 在執(zhí)行 DELETE或 UPDATE語句時,從觸發(fā)程序表中被刪除的行會發(fā)送到 Deleted表。 ? 對于更新操作, SQL Server先將要進行修改的記錄存儲到 Deleted表中,然后再將修改后的數(shù)據(jù)復制到 Inserted表以及觸發(fā)程序表。 3. Deleted表和 Inserted表 創(chuàng)建觸發(fā)器 Deleted表和 Inserted表在執(zhí)行觸發(fā)程序時的情況 TransactSQL語句 Inserted表 Deleted表 INSERT 所要添加的行 空 UPDATE 新的行 舊的行 DELETE 空 刪除的行 創(chuàng)建觸發(fā)器 例 107 為表 customer創(chuàng)建一個名為 test_tr的觸發(fā)器,當執(zhí)行添加、更新或刪除時,激活該觸發(fā)器。 ? 創(chuàng)建 test_tr觸發(fā)器: CREATE TRIGGER test_tr ON customer FOR INSERT,UPDATE,DELETE AS SELECT * FROM inserted SELECT * FROM deleted ? customer表執(zhí)行以下插入操作: INSERT INTO customer(customer_id,customer_name,telephone) VALUES(39。1234639。,39。張三 39。,39。123456739。) 觸發(fā)器的創(chuàng)建與使用 刪除觸發(fā)器 1. 使用企業(yè)管理器刪除觸發(fā)器 刪除觸發(fā)器 2. 使用 DROP TRIGGER刪除指定觸發(fā)器 ? 刪除觸發(fā)器語句的語法格式如下: DROP TRIGGER trigger_name [ , ...n ] ? 例如,刪除例 106的觸發(fā)器 tr_employee: DROP TRIGGER tr_employee 修改觸發(fā)器 ? 通過企業(yè)管理器、系統(tǒng)存儲過程或 Transact_SQL語句,可以修改觸發(fā)器的名字和正文。 觸發(fā)器的創(chuàng)建與使用 ? 1. 使用 sp_rename系統(tǒng)存儲過程修改觸發(fā)器的名字: ? 語法格式為: sp_rename oldname, newname ? 2. 使用企業(yè)管理器修改觸發(fā)器的正文 ? 3. 使用 ALTER TRIGGER語句修改觸發(fā)器 修改觸發(fā)器 ? ALTER TRIGGER修改觸發(fā)器的語法如下: ALTER TRIGGER trigger_name ON {table | view} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF} {[DELETE] [ , ] [ INSERT ] [ , ] [ UPDATE ] } AS sql_statement [ ...n ] 修改觸發(fā)器 ALTER TRIGGER tr_employee ON employee FOR INSERT AS DECLARE @msg varchar(50) SELECT @msg=STR(@@ROWCOUNT)+39。個員工數(shù)據(jù)被插入 39。 SELECT @msg RETURN 例如,將例 106的觸發(fā)器 tr_employee修改為 INSERT操作后進行。 ? 對 employee表執(zhí)行以下插入語句: INSERT employee(employee_id,employee_name)VALUES (39。E01639。,39。王五 39。) ? 激活 INSERT觸發(fā)器 tr_employee,顯示信息如下: 1個員工數(shù)據(jù)被插入 ? 事務 (Transaction)是 SQL Server中的一個邏輯工作單元,該單元將被作為一個整體進行處理。 ? 事務可以是一組 SQL語句、一條 SQL語句或整個程序,在通常情況下,一個應用程序里包含多個事務。 ? 事務保證連續(xù)多個操作必須全部執(zhí)行成功,否則必須立即回復到未執(zhí)行任何操作的狀態(tài),即執(zhí)行事務的結果要么全部將數(shù)據(jù)所要執(zhí)行的操作完成,要么全部數(shù)據(jù)都不修改。 事務概述 事務處理 事務概述 ? 例如,企業(yè)取消了倉儲部,需要將“倉儲部”從 department表中刪除,而 employee表中的部門編號與倉儲部相對應的員工也應刪除。因此,兩個表都需要修改,這種修改只能通過兩條語句DELETE進行。 ?假設倉儲部編號為 D004,第一條 DELETE語句修改department表為: DELETE FROM department WHERE department_id = 39。D00439。 ?第二條 DELETE語句修改 employee表為: DELETE FROM employee WHERE department_id = 39。D004 39。 ? 因此,必須保證這兩條 DELETE語句同時執(zhí)行,或都不執(zhí)行。這時可以使用數(shù)據(jù)庫中的事務技術來實現(xiàn)。 1. 事務的由來 ? 在 SQL Server中,使用 DELETE或 UPDATE語句對數(shù)據(jù)庫進行更新時一次只能操作一個表,這會帶來數(shù)據(jù)庫的數(shù)據(jù)不一致的問題。 2. 事務屬性 ? 事務是網(wǎng)絡數(shù)據(jù)庫中邏輯操作的基本單位,事務的 ACID屬性必不可少。 ? 由于事務作為一個邏輯工作單元,當事務執(zhí)行遇到錯誤時,將取消事務所做的修改。一個邏輯單元必須具有 4個屬性: ? 原子性 (Atomicity) ? 一致性 (Consistency) ? 隔離性 (Isolation) ? 持久性 (Durability) ? 這些屬性稱為 ACID。 事務的 ACID屬性 ? 原子性 (Atomicity) ? 事務必須是工作的最小單位,即原子單元,對于其數(shù)據(jù)的修改,要么全都執(zhí)行,要么全都不執(zhí)行。 ? 一致性 (Consistency) ? 事務在完成后,必須使所有的數(shù)據(jù)都保持一致性狀態(tài)。在相關數(shù)據(jù)庫中,事務必須遵守數(shù)據(jù)庫的約束和規(guī)則,以保持所有數(shù)據(jù)的完整性。事務結束時,所有的內部數(shù)據(jù)結構都必須是正確的。 ? 隔離性 (Isolation) ? 一個事務所作的修改必須與任何其他并發(fā)事務所作的修改隔離。事務查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務修改它之前的狀態(tài),要么是另一事務修改它之后的狀態(tài),事務不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因為它能夠重新裝載起始數(shù)據(jù),并且重播一系列事務,以使數(shù)據(jù)結束時的狀態(tài)與原始事務執(zhí)行的狀態(tài)相同。 ? 持久性 (Durability) ? 事務完成后,它對于系統(tǒng)的影響是永久的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。 3. 事務模式 ? 應用程序主要通過指定事務啟動和結束的時間來控制事務。這可以使用 TransactSQL語句來控制事務的啟動和結束。系統(tǒng)還必須能夠正確處理那些在事務完成之前便中止事務的錯誤。 ? 事務是在連接層進行管理的。當事務在一個連接上啟動時,在該連接上執(zhí)行的所有 TransactSQL語句在該事務結束之前都是該事務的一部分。 ? 引入事務后,所有對數(shù)據(jù)庫的操作就是以事務為邏輯單位進行。一個事務最終只有兩種狀態(tài): 提交狀態(tài) (事務被正常執(zhí)行)和 未提交狀態(tài) (事務必須被回滾)。所以事務概念的引入解決了不可預見的用戶操作的發(fā)生。
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1