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

正文內(nèi)容

第12章安全性-資料下載頁

2025-02-12 09:19本頁面
  

【正文】 帳戶 A 帳戶 B 5 事務(wù) 64 ? 假定張三的帳戶直接轉(zhuǎn)帳 1000元到李四的帳戶 為什么需要事務(wù) CREATE TABLE bank ( customerName CHAR(10), 顧客姓名 currentMoney MONEY 當(dāng)前余額 ) GO ALTER TABLE bank ADD CONSTRAINT CK_currentMoney CHECK(currentMoney=1) GO INSERT INTO bank(customerName,currentMoney) VALUES(39。張三 39。,1000) INSERT INTO bank(customerName,currentMoney) VALUES(39。李四 39。,1) 創(chuàng)建帳戶表,存放用戶的帳戶信息 添加約束:根據(jù)銀行規(guī)定,帳戶余額不能少于 1元,否則視為銷戶 張三開戶,開戶金額為 1000元 ;李四開戶,開戶金額 1元 5 事務(wù) 65 ? 目前兩個帳戶的余額總和為: 1000+1=1001元 5 事務(wù) 為什么需要事務(wù) /*轉(zhuǎn)帳測試:張三轉(zhuǎn)賬 1000元給李四 */ 我們可能會這樣這樣編寫語句 張三的帳戶少 1000元,李四的帳戶多 1000元 UPDATE bank SET currentMoney=currentMoney1000 WHERE customerName=39。張三 39。 UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=39。李四 39。 GO 再次查看轉(zhuǎn)帳后的結(jié)果。 SELECT * FROM bank GO 66 ? 模擬實現(xiàn)轉(zhuǎn)帳 : 從張三的帳戶轉(zhuǎn)帳 1000元到李四的帳戶 請問 : 執(zhí)行轉(zhuǎn)帳語句后,張三、李四的帳戶余額為多少? ? 張三的帳戶沒有減少 ? 但李四的帳戶卻多了 1000元 ? 1000+ 1001= 2023元 總額多出了 1000元! 5 事務(wù) 為什么需要事務(wù) 67 張三的帳戶減少 1000元,李四的帳戶增加 1000元 UPDATE bank SET currentMoney=currentMoney1000 WHERE customerName=39。張三 39。 UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=39。李四 39。 GO ? 錯誤原因分析: UPDATE語句違反約束: 余額 =1元 執(zhí)行失敗,所以張三還是 1000元 繼續(xù)往下執(zhí)行:執(zhí)行成功,所以李四變?yōu)?1001元 如何解決呢?使用 事務(wù) 5 事務(wù) 為什么需要事務(wù) 68 ? 事務(wù) (TRANSACTION)是作為單個邏輯工作單元執(zhí)行的一系列操作 ? 這些操作作為一個整體一起向系統(tǒng)提交,要么都執(zhí)行、要么都不執(zhí)行 ? 事務(wù)是一個不可分割的工作邏輯單元 轉(zhuǎn)帳過程就是一個事務(wù)。 它需要兩條 UPDATE語句來完成,這兩條語句是一個整體,如果其中任一條出現(xiàn)錯誤,則整個轉(zhuǎn)帳業(yè)務(wù)也應(yīng)取消,兩個帳戶中的余額應(yīng)恢復(fù)到原來的數(shù)據(jù),從而確保轉(zhuǎn)帳前和轉(zhuǎn)帳后的余額不變,即都是 1001元。 5 事務(wù) 什么是事務(wù) 69 事務(wù)必須具備以下四個屬性,簡稱 ACID 屬性: ? 原子性( Atomicity): 事務(wù)是一個完整的操作。事務(wù)的各步操作是不可分的(原子的);要么都執(zhí)行,要么都不執(zhí)行 ? 一致性( Consistency) : 當(dāng)事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài) ? 隔離性 ( Isolation) : 對數(shù)據(jù)進行修改的所有并發(fā)事務(wù)是彼此隔離的,這表明事務(wù)必須是獨立的,它不應(yīng)以任何方式依賴于或影響其他事務(wù) ? 永久性( Durability): 事務(wù)完成后,它對數(shù)據(jù)庫的修改被永久保持,事務(wù)日志能夠保持事務(wù)的永久性 5 事務(wù) 事務(wù)的特性 70 ? TSQL使用下列語句來管理事務(wù): – 開始事務(wù): BEGIN TRANSACTION – 提交事務(wù): COMMIT TRANSACTION – 回滾(撤銷)事務(wù): ROLLBACK TRANSACTION 一旦事務(wù)提交或回滾,則事務(wù)結(jié)束。 ? 判斷某條語句執(zhí)行是否出錯: – 使用全局變量 ERROR; – ERROR只能判斷當(dāng)前一條 TSQL語句執(zhí)行是否有錯,為了判斷事務(wù)中所有 TSQL語句是否有錯,我們需要對錯誤進行累計; 如: SET errorSum=errorSum+error 5 事務(wù) 如何創(chuàng)建事務(wù) 71 了解事務(wù)的分類: ? 顯示事務(wù) :用 BEGIN TRANSACTION明確指定事務(wù)的開始,這是最常用的事務(wù)類型 ? 隱性事務(wù):通過設(shè)置 SET IMPLICIT_TRANSACTIONS ON 語句,將隱性事務(wù)模式設(shè)置為打開,下一個語句自動啟動一個新事務(wù)。當(dāng)該事務(wù)完成時,再下一個 TSQL 語句又將啟動一個新事務(wù) ? 自動提交事務(wù):這是 SQL Server 的默認模式,它將每條單獨的 TSQL 語句視為一個事務(wù),如果成功執(zhí)行,則自動提交;如果錯誤,則自動回滾 5 事務(wù) 如何創(chuàng)建事務(wù) 72 …… 關(guān)鍵語句講解 ……… BEGIN TRANSACTION /*定義變量,用于累計事務(wù)執(zhí)行過程中的錯誤 */ DECLARE errorSum INT SET errorSum=0 初始化為 0,即無錯誤 /*轉(zhuǎn)帳:張三的帳戶少 1000元,李四的帳戶多 1000元 */ UPDATE bank SET currentMoney=currentMoney1000 WHERE customerName=39。張三 39。 SET errorSum=errorSum+error UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=39。李四 39。 SET errorSum=errorSum+error 累計是否有錯誤 ? 使用事務(wù)解決銀行轉(zhuǎn)帳問題 開始事務(wù)(指定事務(wù)從此處開始,后續(xù)的 TSQL語句都是一個整體) 累計是否有錯誤 5 事務(wù) 如何創(chuàng)建事務(wù) 73 IF errorSum0 如果有錯誤 BEGIN print 39。交易失敗,回滾事務(wù) 39。 ROLLBACK TRANSACTION END ELSE BEGIN print 39。交易成功,提交事務(wù),寫入硬盤,永久的保存 39。 COMMIT TRANSACTION END GO print 39。查看轉(zhuǎn)帳事務(wù)后的余額 39。 SELECT * FROM bank GO 根據(jù)是否有錯誤,確定事務(wù)是提交還是撤銷 如果有錯,則回滾操作,事務(wù)結(jié)束 如果成功,則提交操作,事務(wù)結(jié)束 5 事務(wù) 如何創(chuàng)建事務(wù) 74 轉(zhuǎn)帳事務(wù)前 轉(zhuǎn)帳事務(wù)過程中 轉(zhuǎn)帳事務(wù)結(jié)束后 ? 演示:轉(zhuǎn)帳 1000,轉(zhuǎn)帳失敗的情況 5 事務(wù) 如何創(chuàng)建事務(wù) 75 轉(zhuǎn)帳事務(wù)前 轉(zhuǎn)帳事務(wù)過程中 轉(zhuǎn)帳事務(wù)結(jié)束后 ? 演示:轉(zhuǎn)帳 800,轉(zhuǎn)帳成功的情況 5 事務(wù) 如何創(chuàng)建事務(wù) ? 鎖:保護指定的資源,不被其他事務(wù)操作。 6 鎖 學(xué)號 姓名 101 199 袁敏 UPDATE SELECT 例 排它鎖(獨占鎖):在對表的數(shù)據(jù)進行 DML操作時, 會給相應(yīng)的數(shù)據(jù)加上獨占鎖,不允許其他事務(wù)對數(shù)據(jù)進 行查詢或 DML操作 學(xué)生 學(xué)號 姓名 101 袁敏 SELECT 學(xué)生 SELECT 例 共享鎖:在對表的數(shù)據(jù)進行查詢時,可以給相應(yīng) 的數(shù)據(jù)加上共享鎖,允許其他事務(wù)對數(shù)據(jù)進行查詢, 但不允許 DML操作 UPDATE 6 鎖 學(xué)號 姓名 101 袁敏 例 死鎖:當(dāng)多個事務(wù)分別鎖定一個資源,卻又等待對 方釋放其鎖定的資源時,就會發(fā)生死鎖 課程號 課程名 1051 數(shù)據(jù)庫 UPDATE UPDATE 用戶 1 用戶 2 UPDATE 學(xué)生 課程 6 鎖
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1