惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
G
Google Developers Blog
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
月光博客
月光博客
B
Blog
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
博客园_首页
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
Jina AI
Jina AI
S
SegmentFault 最新的问题
H
Help Net Security
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
Google DeepMind News
Google DeepMind News

博客园 - oisiv

java线程池ThreadPoolTaskExecutor执行顺序 css一些特别效果设定 使用jquery模拟键盘事件,但window系统并不会真的响应事件,只是浏览器当前页面会响应而已 base64编码的图片字节流存入html页面中的显示 设置span 宽度的完美解决方案 Mercurial hg web server的配置 DIV撑开 java.net.URLEncode编码 与 URLDecode解码问题 java在CMD环境下执行需注意字符集设定 把MSSQL的表数据查询成 insert into格式的函数 配置jboss4.2.3GA启用SSL html中DIv并排显示问题 鲁迅《兩地書》 java采用Apache FileUpload组件实现上传 js中对象复制以及apply方法的使用 可执行jar包的处理,以及could not find the main class win7/xp 双击执行jar包出现:could not find the main class的问题处理 MSSql性能优化 CSS拼装图片时,确保严丝合缝 在 SQL Server 2008 中新建用户登录并指定该用户的数据库
SQL模擬死結產生
oisiv · 2016-05-28 · via 博客园 - oisiv

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

[SQL] 模擬死結產生

在 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'

WAITFOR DELAY '00:00:05'

UPDATE Part SET Product = 'SQL Server 2012' WHERE Product = 'SQL Server 2012'

COMMIT TRANSACTION

  • T-SQL 查詢 2

1

2

3

4

5

BEGIN TRANSACTION

UPDATE Part SET Product = 'SQL Server 2012' WHERE Product = 'SQL Server 2012'

WAITFOR DELAY '00:00:05'

UPDATE Supplier SET SPLName = 'Microsoft' WHERE SPLNO = '00000'

COMMIT TRANSACTION

  • 死結錯誤訊息

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

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