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 SupplierIF OBJECT_ID('Part') IS NOT NULL DROP TABLE PartCREATE 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 TRANSACTIONUPDATE Supplier SET SPLName = 'Microsoft' WHERE SPLNO = '00000' -- Step 1WAITFOR DELAY '00:00:05'UPDATE Part SET Product = 'SQL Server 2012' WHERE Product = 'SQL Server 2012' -- Step 3COMMIT TRANSACTION |
- T-SQL 查詢 2
|
1
2
3
4
5
|
BEGIN TRANSACTIONUPDATE Part SET Product = 'SQL Server 2012' WHERE Product = 'SQL Server 2012' -- Step 2WAITFOR DELAY '00:00:05'UPDATE Supplier SET SPLName = 'Microsoft' WHERE SPLNO = '00000' -- Step 4COMMIT TRANSACTION |
- 死結錯誤訊息
SQL模擬死結產生的更多相关文章
- JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (1):NetBeans 寫 Servlet (转帖)
JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (1):NetBeans 寫 Servlet 功能:這支程式的主要功能是將 javafx 與 swi ...
- JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (3):部署設定及應用 (转帖)
說明:這一篇主要是說明如何將程式部署到Application Server,以及程式如何運作,產生的檔案置於何處,以及如何以瀏覽器呈現(Applet),或是當成桌面應用程式,或是 桌面Applet,這 ...
- JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (2):JavaFX建立及程式碼說明 (转帖)
說明:就如同標題一樣,前端會用到JavaFX.Swing.Java Web Start.Google Map 的技術, 後端就是JDBC.Servlet的技術,以及我們會簽署認證jar檔案,這樣才可存 ...
- Datagard產生gap
本文轉載自無雙的小寶的博客:http://www.cnblogs.com/sopost/archive/2010/09/11/2190085.html 有時候因為網路或備份故障等原因,主機所產生的歸檔 ...
- ASP.NET Web API 文件產生器 - 使用 Swagger
转帖:http://kevintsengtw.blogspot.hk/2015/12/aspnet-web-api-swagger.html Swagger 是一套 API 互動文件產生器,使用 HT ...
- COB Epoxy灌膠時氣泡產生的原因與解決方法
COB的黑膠 (Epoxy)有氣泡通常是不被允許的,因為外部氣孔不但會影響到外觀,內部氣孔更有可能會破壞 Wire bonding 的鋁線穩定度.既使在COB製程剛完成的時候沒有通過功能測試,也不代表 ...
- 使用 FOR XML PATH 產生 XML 格式時,遇到 NULL 該如何處理?
當您嘗試利用 FOR XML PATH 產生 XML 格式時,若遇到 Result Set 為 Null 時,會導致整個查詢結果為 Null ,若您想要在查不到資料時,可以顯示自訂的內容,本文將提供可 ...
- javascript中的function命名空間與模擬getter、setter
function的命名空間 在javascript中,function也可以擁有自己的命名空間例如以下這段程式碼: 12345678 function () { return 'I am A';} A ...
- C# 在執行程式目錄下產生文件夾
//產生一個Log文件夾string appPath = Application.StartupPath; if (!Directory.Exists(appPath + "/log&quo ...
随机推荐
- ZUFE OJ 2289 God Wang II
Description 这个世界太无聊了,于是God Wang想出了新的运算符号$,对于两个数x,y来说x$y的值等于x和y各个位置上的数字乘积之和,没有的位按0来算 比如说123$321=1*3+2 ...
- C语言_error_MSB8031
关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法 Visual Studio 2013 编译旧的 mul ...
- org.springframework.transaction.CannotCreateTransactionException
HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.Can ...
- jni开发中的常见错误
* java.lang.UnsatisfiedLinkError: Native method not found: 本地方法没有找到 * 本地函数名写错 * 忘记加载.so文件 没有调用System ...
- Ubuntu上安装mono
How do I use badgerports? badgerports is an Ubuntu repository. In order to use it, you must add it t ...
- 网站的性能优化与安全(高效C#编码优化)
1. Foreach 比 For 性能高30%2. 避免是使用ArrayList, 因为任何对象到ArrayList都有封装为Object,出来还要拆箱. 用泛型去掉3. HashTalbe取代 ...
- 控制器view的加载顺序initWithNibName >>> viewDidLoad >>> viewWillAppear >>> viewDidAppear
-(void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBarHidden=NO;// 邓超界:放在wil ...
- hostent h_addr_list
struct hostent { char FAR * h_name; /* official name of host */ char FAR * FAR * h_aliases; /* alias ...
- docker镜像与容器概念
本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(containe ...
- c++ map unordered_map
map operator<的重载一定要定义成const.因为map内部实现时调用operator<的函数好像是const. #include<string> #include& ...