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

正文內(nèi)容

[計(jì)算機(jī)]第10章存儲(chǔ)過程與觸發(fā)器(參考版)

2024-10-22 03:48本頁面
  

【正文】 本章小結(jié) 。當(dāng)對(duì)一個(gè)數(shù)據(jù)源加鎖后,此數(shù)據(jù)源就有了一定的訪問限制。 (5)事務(wù)是一個(gè)操作序列,它包含了一組數(shù)據(jù)庫操作命令,所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤消操作請(qǐng)求,即要么都執(zhí)行,要么都不執(zhí)行。 (3)創(chuàng)建、刪除、查看、修改存儲(chǔ)過程和觸發(fā)器可以使用企業(yè)管理器或TransactSQL語句。存儲(chǔ)過程用于完成某項(xiàng)任務(wù),它可以接受參數(shù)、返回狀態(tài)值和參數(shù)值,并且實(shí)現(xiàn)嵌套調(diào)用。 ? (4) 每個(gè)事務(wù)的執(zhí)行時(shí)間不可太長,對(duì)程序段長的事務(wù)可考慮將其分割為幾個(gè)事務(wù)。 ? (3) 預(yù)先規(guī)定一個(gè)封鎖順序,所有的事務(wù)都必須按這個(gè)順序?qū)?shù)據(jù)執(zhí)行封鎖。 防止死鎖的途徑 ? 防止死鎖的途徑就是不能讓滿足死鎖條件的情況發(fā)生,為此,用戶需要遵循以下原則: ? (1) 盡量避免并發(fā)地執(zhí)行涉及到修改數(shù)據(jù)的語句。 ? SQL Server解決死鎖的原則是“犧牲一個(gè)比兩個(gè)都死強(qiáng)”,即挑出一個(gè)進(jìn)程作為犧牲者,將其事務(wù)回滾,并向執(zhí)行此進(jìn)程的程序發(fā)送編號(hào)為 1205的錯(cuò)誤信息。當(dāng)識(shí)別死鎖后, SQL Server自動(dòng)設(shè)置一個(gè)事務(wù)結(jié)束死鎖進(jìn)程。 ? 死鎖會(huì)造成資源的大量浪費(fèi),甚至?xí)瓜到y(tǒng)崩潰。 ? spid數(shù)據(jù)類型為 int,如果不指定 spid,則顯示所有的鎖。 SQL Server支持以下 4種隔離級(jí)別 隔離級(jí)別 使用 SET TRANSACTION ISOLATION LEVEL語句設(shè)置會(huì)話的隔離級(jí)別 ? 其語法格式如下: SET TRANSACTION ISOLATION LEVEL {READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE } ?一次只能設(shè)置一個(gè)選項(xiàng)。將共享鎖保持到事務(wù)完成,而不是不管事務(wù)是否完成都在不再需要所需的表或數(shù)據(jù)頁時(shí)就立即釋放共享鎖。此選項(xiàng)會(huì)影響系統(tǒng)的效能,非必要情況最好不用此隔離級(jí)別。 ? (3) 可重復(fù)讀 (REPEATABLE READ)。與提交讀隔離級(jí)別相反,它允許讀取臟數(shù)據(jù),即已經(jīng)被其他用戶修改但尚未提交的數(shù)據(jù)。在此隔離級(jí)別下, SELECT語句不會(huì)也不能返回尚未提交(Committed)的數(shù)據(jù) (即臟數(shù)據(jù) )。 隔離級(jí)別 隔離級(jí)別 ? (1) 提交讀 (READ COMMITTED)。相反,較高的隔離級(jí)別可以確保數(shù)據(jù)的正確性,但可能對(duì)并發(fā)產(chǎn)生負(fù)面影響。 ? 隔離級(jí)別是一個(gè)事務(wù)必須與其他事務(wù)進(jìn)行隔離的程度。它是指自動(dòng)數(shù)據(jù)處理系統(tǒng)中的用戶和資源的相關(guān)牽制關(guān)系,也就是用戶和進(jìn)程彼此分開,且和操作系統(tǒng)的保護(hù)控制也分開來。悲觀鎖需要程序員直接管理數(shù)據(jù)或?qū)ο笊系募渔i處理,并負(fù)責(zé)獲取、共享和放棄正在使用的數(shù)據(jù)上的任何鎖。一般情況下,當(dāng)執(zhí)行事務(wù)處理時(shí), SQL Server會(huì)自動(dòng)對(duì)事務(wù)處理范圍內(nèi)更新到的表做鎖定。 ? (1) 共享鎖 (Shared Lock) ? (2) 排它鎖 (Exclusive Lock) ? (3) 更新鎖 (Update Lock) 從程序員的角度,鎖可以分為以下兩種類型: ? (1) 樂觀鎖 (Optimistic Lock)。 ⑥ 數(shù)據(jù)庫 (Database)。 ④ 擴(kuò)展盤區(qū) (Extent):一個(gè)盤區(qū)由 8個(gè)連續(xù)的頁組成。 ② 索引行 (Key):索引頁中的單行數(shù)據(jù),即索引的鍵值。 ? SQL Server有多種粒度鎖,允許一個(gè)事務(wù)鎖定不同類型的資源。 ? 雖然 SQL Server會(huì)自動(dòng)強(qiáng)制執(zhí)行鎖,但是用戶可以通過對(duì)鎖進(jìn)行了解并在應(yīng)用程序中自定義鎖來設(shè)計(jì)出更有效率的應(yīng)用程序。 運(yùn)行結(jié)果: 3 2 1 0 ? 鎖 (Lock)作為一種安全機(jī)制,用于控制多個(gè)用戶的并發(fā)操作,以防止用戶讀取正在由其他用戶更改的數(shù)據(jù)或者多個(gè)用戶同時(shí)修改同一數(shù)據(jù),從而確保事務(wù)完整性和數(shù)據(jù)庫一致性。Li39。0339。Wang39。0239。Zhang39。0139。 事務(wù)管理 ? 和 BEGIN…END 語句類似, BEGIN TRANSACTION和COMMIT TRANSACTION語句也可以進(jìn)行嵌套,即事務(wù)可以嵌套執(zhí)行。 IF (error =0 OR rowcount =0) 判斷是否出錯(cuò)或無記錄 BEGIN ROLLBACK TRANSACTION after_delete 如果出錯(cuò)回滾到保存點(diǎn) COMMIT TRANSACTION my_transaction_delete 出錯(cuò)回滾后提交 END ELSE COMMIT TRANSACTION my_transaction_delete 未出錯(cuò)進(jìn)行提交 GO 例 1012 刪除倉儲(chǔ)部,再將倉儲(chǔ)部的職工劃分到總經(jīng)理辦。 WHERE department_id=39。 SAVE TRANSACTION after_delete 設(shè)置保存點(diǎn) UPDATE employee SET department_id=39。 事務(wù)管理 BEGIN TRANSACTION my_transaction_delete DELETE FROM department WHERE department_id=39。其語法格式如下: SAVE TRAN[SACTION] {savepoint_name | savepoint_variable} ? 對(duì)于長事務(wù),可以在事務(wù)中設(shè)置若干個(gè)保存點(diǎn)。,5,getdate( )) ROLLBACK TRANSACTION 事務(wù)管理 事務(wù)回滾到指定位置 ? 如果要讓事務(wù)回滾到指定位置,則需要在事務(wù)中設(shè)定保存點(diǎn) (SavePoint)。,39。 INSERT INTO sell_order(order_id1,goods_id,order_num,order_date) VALUES(39。 BEGIN TRANSACTION UPDATE goods SET stock_quantity=stock_quantity5 WHERE goods_id=39。這個(gè)操作過程叫 事務(wù)回滾 (Transaction Rollback)。 事務(wù)管理 ? 事務(wù)回滾使用 ROLLBACK TRANSACTION語句實(shí)現(xiàn),其語法格式如下: ROLLBACK [TRAN[SACTION] [transaction_name | tran_name_variable | savepoint_name | savepoint_variable] ] ? 其中, savepoint_name用于指定回滾到某一指定位置的標(biāo)記名稱, savepoint_variable為存放該標(biāo)記名稱的變量。Li39。0339。Wang39。0239。Zhang39。0139。 ? 本例命名了一個(gè) tran_delete事務(wù),該事務(wù)用于 department表的“倉儲(chǔ)部”記錄行及相關(guān)數(shù)據(jù)。D00439。D00439。tran_delete39。 BEGIN TRANSACTION SELECT * FROM employee COMMIT TRANSACTION ? 本例創(chuàng)建的事務(wù)以 BEGIN TRANSACTION語句開始,以COMMIT TRANSACTION語句結(jié)束。 ] ] ] ? 結(jié)束事務(wù)語句的語法格式如下(提交事務(wù)): COMMIT [TRAN[SACTION] [transaction_name | tran_name_variable] ] 事務(wù)管理 ? SQL Server 按事務(wù)模式進(jìn)行事務(wù)管理,設(shè)置事務(wù)啟動(dòng)和結(jié)束的時(shí)間,正確處理事務(wù)結(jié)束之前產(chǎn)生的錯(cuò)誤。 1. 啟動(dòng)和結(jié)束事務(wù) ? 啟動(dòng)事務(wù)語句的語法格式如下(定義事務(wù)): BEGIN TRAN[SACTION] [ transaction_name | tran_name_variable [ WITH MARK [ 39。隱性事務(wù)不需要使用 BEGIN TRANSACTION語句標(biāo)識(shí)事務(wù)的開始,但需要以 COMMIT或 ROLLBACK語句來提交或回滾事務(wù)。事務(wù)以 BEGIN TRANSACTION語句顯式 開始 ,以 COMMIT或 ROLLBACK語句 顯式 結(jié)束 。該模式為系統(tǒng)默認(rèn)的事務(wù)管理模式。 ? SQL Server以 3種事務(wù)模式管理事務(wù) ? (1) 自動(dòng)提交事務(wù)模式:每條單獨(dú)的語句
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1