SQL模擬死結產生

引用自:http://jengting.blogspot.tw/2012/06/sql.html

根據 MSDN 將死結數量降至最低 裡的圖型模擬死結產生 ~~

在 SSMS 內開啟兩個 T-SQL 查詢(兩個執行緒),利用下面語法來執行,請先執行 T-SQL 查詢 1,再執行 T-SQL 查詢 2。

步驟簡易說明:

  • Step 1:建立一個 T-SQL 查詢 1,開啟一個交易,並進行更新 Supplier 資料
  • Step 2:建立另一個 T-SQL 查詢 2,開啟一個交易,並進行更新 Part
  • Step 3:回到 T-SQL 查詢 1,更新 Part
  • Step 4:回到 T-SQL 查詢 2,更新 Supplier

藉此產生一個死結。

  • 建立測試資料

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

IF OBJECT_ID(‘Supplier‘) IS NOT NULL

  DROP TABLE Supplier

IF OBJECT_ID(‘Part‘) IS NOT NULL

  DROP TABLE Part

CREATE TABLE Supplier

  (

    SPLNO char(5),

    SPLName char(10),

    CONSTRAINT [PK_Supplier] PRIMARY KEY CLUSTERED ([SPLNO] ASC)

  )

CREATE TABLE Part

  (

    SPLNO char(5),

    Product char(50),

    CONSTRAINT [PK_Part] PRIMARY KEY CLUSTERED ([SPLNO] ASC,[Product] ASC)

  )

INSERT INTO Supplier VALUES(‘00000‘,‘Microsoft‘)

INSERT INTO Part VALUES(‘00000‘,‘SQL Server 2012‘)

  • T-SQL 查詢 1

1

2

3

4

5

BEGIN TRANSACTION

UPDATE Supplier SET SPLName = ‘Microsoft‘ WHERE SPLNO = ‘00000‘ -- Step 1

WAITFOR DELAY ‘00:00:05‘

UPDATE Part SET Product = ‘SQL Server 2012‘ WHERE Product = ‘SQL Server 2012‘ -- Step 3

COMMIT TRANSACTION

  • T-SQL 查詢 2

1

2

3

4

5

BEGIN TRANSACTION

UPDATE Part SET Product = ‘SQL Server 2012‘ WHERE Product = ‘SQL Server 2012‘ -- Step 2

WAITFOR DELAY ‘00:00:05‘

UPDATE Supplier SET SPLName = ‘Microsoft‘ WHERE SPLNO = ‘00000‘ -- Step 4

COMMIT TRANSACTION

  • 死結錯誤訊息

訊息 1205,層級 13,狀態 45,行 1

交易 (處理序識別碼 52) 在 鎖定 資源上被另一個處理序鎖死並已被選擇作為死結的犧牲者。請重新執行該交易。

时间: 2024-10-12 23:31:25

SQL模擬死結產生的相关文章

想升級Eclipse ADT的外掛,升級加速Android模擬器,才知道過程沒那麼簡單

自從Android Studio1.0正式版推出後, 官網只有提供Android Studio的下載, 所以習慣用Eclipse ADT Bundle的人,從此也沒得下載, 這樣一來想用Eclipse開發Android, 就只能:(1)分次各別下載各種外掛, 那種情境就請到官網 https://eclipse.org/downloads/ 下載, 那種情境的流程, 我會另外寫一篇文來說明.或者:2)總不能每次有更新的版本推出時都把用的很習慣的eclipse開發環境給捨棄吧, 更何況如果已經安裝了

[心得]群裡提問的流水序號產生方式

在群裡有天@潇湘隐者 提了一個這樣的問題,蠻有趣的.當天就試了一下 以下是我的思路跟測試語法 ------------------------------------------------------- 有这样一个需求需要根据输入的编码(这个编码值来自于数据库的一个表)生成下一个编码,编码规则如下所示(我们暂且不关心这个逻辑是否合理,只关心如何实现): 1: 最小值为A0000, 最大值为ZZZZZ 2:编码A0000的下一个值为A0001, 编码A9999的下一个值为B0000, 编码AB9

COB Epoxy灌膠時氣泡產生的原因與解決方法

COB的黑膠 (Epoxy)有氣泡通常是不被允許的,因為外部氣孔不但會影響到外觀,內部氣孔更有可能會破壞 Wire bonding 的鋁線穩定度.既使在COB製程剛完成的時候沒有通過功能測試,也不代表沒有問題,因為在使用一段時間之後,極有可能會因為氣孔內空氣的熱脹冷縮的作用而扯斷鋁線(Al wire):另外內部氣孔也可能會積存水氣,久而久之造成零件內部線路氧化影響功能. 黑膠會產生氣泡的原因很多,解決的方法也不一定,先從黑膠可能產生氣泡的原因說起好了.黑膠本身不太會產生氣體,所以氣孔的形成一般有

類似太陽的恒星以非常快的速度產生

英國都漢姆大學計算宇宙學研究所馬克-施文柏恩克(Mark Swinbank)博士說:“我們還沒有完全瞭解恒星形成得如此快的原因.但我們的觀測結果表明,在早期宇宙中,恒星的形成速度比現在大很多.早期宇宙中 的星系看起來已經經歷了一個快速生長過程,使得類似太陽的恒星以非常快的速度產生.” 科學家估計,SMM J2135-0102星系產生恒星的速度相當於每年產生出250個太陽.英國都漢姆大學帶領導的國際研究小組稱這次發現就像看到“正在經歷快速生長的青少年”. 研究人員隨後用強大的亞毫米波陣列望遠鏡對

Blaze產生執行系統步骤及规则维护系统步骤

1產生Blaze執行系統 1.1生成發佈檔案 首先請確保項目能夠編譯通過. 在IDE中的Blaze視圖中,選擇項目根節點,選擇"Project" –> "Generate Rule Project Deployment": 在彈出窗口中選擇默認配置文檔,然後選擇Next: 選擇默認配置檔案,選擇"Next": 選擇部署檔案位置并選擇Next: 點擊"Finish": 顯示成功生成檔案的提示: 進入檔案的"Ser

MAC安裝《Genymotion Android模擬器》大玩Android APP (神魔之塔)

链接地址:http://www.minwt.com/mac/10083.html/comment-page-2 MAC» 智慧型裝罝» Android | 2014/02/12 Android是一個開放的平台,因此先前也分享了幾個Android的模擬器,但當初梅干使用Android模擬器,最主要的功能就是用來測試網頁,看網頁在Android手機上是否能正常運作,雖然說這些Android模擬器,也可透過Google Player安裝Android APP,在電腦中就可玩Android APP,但由

如何在Windows XP上飆速Android intel模擬器加速器(HAXM)

因為還有很大部分的學習環境仍然還在使用 Windows XP在練習及開發Android,有鑑於此, 為了協助這樣的一個族群同時於多版本的情境下用Android模擬器飆速測試及開發程式, 0. 首先在進入Windows系統前, 先切入BIOS的setup,檢視BIOS設定, VT 及 XD 要設為[Enable]. 依廠牌而定,VT及XD設定位置可能都不一樣.如果待會兒沒設[XD] enable,也沒有回報錯誤訊息, [XD]可不設. 1.開啟Eclipse 開發環境,檢視你的 SDK Manag

清明时节欲断魂——未知死焉知生?

孔夫子在<论语>里面有一段话,叫做“未知生焉知死”,当然这是否能够代表孔子的生死观我们不敢妄下断言,但至少它代表了一种典型的生死态度.生的事情你都还没弄明白呢,死你管它干什么?在我们看来生的问题永远搞不明白,那死的问题你根本就不用想了.与此相对的是基督教的一种观念,或者说宗教的一种观念,它其实是从人对死的思考来展开的——未知死焉知生?你对死后的东西不弄明白,那你这个生的意义在哪里?人生究竟有没有归宿啊?有没有来生来世啊?有没有天堂地狱啊? 这两个观点之间的对比我们不去谈它,但是的确我们中国人的

用php動態產生各種尺寸的圖片

我的做法是用php動態產生各種尺寸的圖片,例如<img src="img.php?src=a.jpg&width=100&height=200"...<img src="img.php?src=a.jpg&width=200&height=200"...<img src="img.php?src=a.jpg&width=300&height=200"... 我這個a.jpg就是原圖