亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

NIIT認(rèn)證

NIIT認(rèn)證面試題

時(shí)間:2024-07-03 13:29:28 NIIT認(rèn)證 我要投稿

2016年NIIT認(rèn)證面試題精選

  什么是事務(wù)?四大事務(wù)特性是什么?(ACID)

2016年NIIT認(rèn)證面試題精選

  事務(wù)是單個(gè)的工作單元。如果某一事務(wù)成功,則在該事務(wù)中進(jìn)行的所有數(shù)據(jù)修改均會(huì)提交,成為數(shù)據(jù)庫中的永久組成部分。如果事務(wù)遇到錯(cuò)誤且必須取消或回滾,則所有數(shù)據(jù)修改均被清除。

  舉個(gè)例子,比如你去銀行轉(zhuǎn)帳就是一個(gè)事務(wù)。轉(zhuǎn)帳可以簡(jiǎn)單的分為兩個(gè)步驟,一是把錢從你的帳戶中扣除,二是把錢存到你指定轉(zhuǎn)帳的帳戶中。這兩個(gè)步驟就是一個(gè)事務(wù),必須全部執(zhí)行,或是全部不執(zhí)行。如果從你帳戶扣錢成功,但是轉(zhuǎn)帳失敗,那么你轉(zhuǎn)帳的錢就沒有了;如果是扣錢失敗了,但是轉(zhuǎn)帳成功了,那銀行就虧了。

  事務(wù)是作為單個(gè)邏輯工作單元執(zhí)行的一系列操作。一個(gè)邏輯工作單元必須有四個(gè)屬性,稱為原子性、一致性、隔離性和持久性 (ACID) 屬性,只有這樣才能成為一個(gè)事務(wù)。

  原子性:事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。

  一致性:事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹索引或雙向鏈表)都必須是正確的。

  隔離:由并發(fā)事務(wù)所做的修改必須與任何其他并發(fā)事務(wù)所做的修改隔離。事務(wù)識(shí)別數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是第二個(gè)事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)識(shí)別中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。

  持久性:事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。

  SQL Server 以下列事務(wù)模式運(yùn)行。

  自動(dòng)提交事務(wù):每條單獨(dú)的語句都是一個(gè)事務(wù)。

  顯式事務(wù):每個(gè)事務(wù)均以 BEGIN TRANSACTION 語句顯式開始,以 COMMIT 或 ROLLBACK 語句顯式結(jié)束。

  隱式事務(wù):在前一個(gè)事務(wù)完成時(shí)新事務(wù)隱式啟動(dòng),但每個(gè)事務(wù)仍以 COMMIT 或 ROLLBACK 語句顯式完成。

  批處理級(jí)事務(wù):只能應(yīng)用于多個(gè)活動(dòng)結(jié)果集 (MARS),在 MARS 會(huì)話中啟動(dòng)的 Transact-SQL 顯式或隱式事務(wù)變?yōu)榕幚砑?jí)事務(wù)。當(dāng)批處理完成時(shí)沒有提交或回滾的批處理級(jí)事務(wù)自動(dòng)由 SQL Server 進(jìn)行回滾。

  Sql Server中有三種使用事務(wù)的方法,分別是Sql語句,SqlTransaction和TransactionScope,下面一節(jié)將分別介紹這三種事務(wù)的使用方法。htt

  事務(wù)(TRANSACTION)是作為單個(gè)邏輯工作單元執(zhí)行的一系列操作

  q 這些操作作為一個(gè)整體一起向系統(tǒng)提交,要么都執(zhí)行、要么都不執(zhí)行

  q 事務(wù)是一個(gè)不可分割的工作邏輯單元

  轉(zhuǎn)帳過程就是一個(gè)事務(wù)。

  它需要兩條UPDATE語句來完成,這兩條語句是一個(gè)整體,如果其中任一條出現(xiàn)錯(cuò)誤,則整個(gè)轉(zhuǎn)帳業(yè)務(wù)也應(yīng)取消,兩個(gè)帳戶中的余額應(yīng)恢復(fù)到原來的數(shù)據(jù),從而確保轉(zhuǎn)帳前和轉(zhuǎn)帳后的余額不變,即都是1001元。

  事務(wù)的特性

  事務(wù)必須具備以下四個(gè)屬性,簡(jiǎn)稱ACID屬性:

  •q原子性(Atomicity):事務(wù)是一個(gè)完整的操作。事務(wù)的各步操作是不可分的(原子的);要么都執(zhí)行,要么都不執(zhí)行

  •q一致性(Consistency):當(dāng)事務(wù)完成時(shí),數(shù)據(jù)必須處于一致狀態(tài)

  •q隔離性(Isolation):對(duì)數(shù)據(jù)進(jìn)行修改的所有并發(fā)事務(wù)是彼此隔離的,這表明事務(wù)必須是獨(dú)立的,它不應(yīng)以任何方式依賴于或影響其他事務(wù)

  •q永久性(Durability):事務(wù)完成后,它對(duì)數(shù)據(jù)庫的修改被永久保持,事務(wù)日志能夠保持事務(wù)的永久性

  如何創(chuàng)建事務(wù)

  q T-SQL使用下列語句來管理事務(wù):

  q 開始事務(wù):BEGIN TRANSACTION

  q 提交事務(wù):COMMIT TRANSACTION

  q 回滾(撤銷)事務(wù):ROLLBACK TRANSACTION

  一旦事務(wù)提交或回滾,則事務(wù)結(jié)束。

  q 判斷某條語句執(zhí)行是否出錯(cuò):

  q 使用全局變量@@ERROR;

  q @@ERROR只能判斷當(dāng)前一條T-SQL語句執(zhí)行是否有錯(cuò),為了判斷事務(wù)中所有T-SQL語句是否有錯(cuò),我們需要對(duì)錯(cuò)誤進(jìn)行累計(jì);

  如: SET @errorSum=@errorSum+@@error

  了解事務(wù)的分類:

  q 顯示事務(wù):用BEGIN TRANSACTION明確指定事務(wù)的開始,這是最常用的事務(wù)類型

  q 隱性事務(wù):通過設(shè)置SET IMPLICIT_TRANSACTIONS ON 語句,將隱性事務(wù)模式設(shè)置為打開,下一個(gè)語句自動(dòng)啟動(dòng)一個(gè)新事務(wù)。當(dāng)該事務(wù)完成時(shí),再下一個(gè) T-SQL 語句又將啟動(dòng)一個(gè)新事務(wù)

  q 自動(dòng)提交事務(wù):這是 SQL Server 的默認(rèn)模式,它將每條單獨(dú)的 T-SQL 語句視為一個(gè)事務(wù),如果成功執(zhí)行,則自動(dòng)提交;如果錯(cuò)誤,則自動(dòng)回滾

  q 使用事務(wù)解決銀行轉(zhuǎn)帳問題

  ……關(guān)鍵語句講解………

  BEGIN TRANSACTION

  /*--定義變量,用于累計(jì)事務(wù)執(zhí)行過程中的錯(cuò)誤--*/

  DECLARE @errorSum INT

  SET @errorSum=0 --初始化為0,即無錯(cuò)誤

  /*--轉(zhuǎn)帳:張三的帳戶少1000元,李四的帳戶多1000元*/

  UPDATE bank SET currentMoney=currentMoney-1000

  WHERE customerName='張三'

  SET @errorSum=@errorSum+@@error

  UPDATE bank SET currentMoney=currentMoney+1000

  WHERE customerName='李四'

  SET @errorSum=@errorSum+@@error --累計(jì)是否有錯(cuò)誤

  IF @errorSum<>0 --如果有錯(cuò)誤

  BEGIN

  print '交易失敗,回滾事務(wù)'

  ROLLBACK TRANSACTION

  END

  ELSE

  BEGIN

  print '交易成功,提交事務(wù),寫入硬盤,永久的保存'

  COMMIT TRANSACTION

  END

  Go

  print '查看轉(zhuǎn)帳事務(wù)后的余額'

  SELECT * FROM bank

  GO

【NIIT認(rèn)證面試題】相關(guān)文章:

NIIT認(rèn)證Java面試題及答案08-27

NIIT認(rèn)證簡(jiǎn)介08-15

NIIT認(rèn)證的就業(yè)前景06-26

NIIT教學(xué)及認(rèn)證體系09-16

NIIT認(rèn)證詳細(xì)介紹07-09

關(guān)于NIIT認(rèn)證的介紹06-16

NIIT認(rèn)證培訓(xùn)筆記08-18

2016關(guān)于NIIT認(rèn)證的問與答06-21

2016年NIIT認(rèn)證模擬試題10-27

NIIT認(rèn)證面試真題及答案2017年05-11