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

正文內(nèi)容

第12章安全性-資料下載頁(yè)

2025-02-12 09:19本頁(yè)面
  

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