Skip to content

Commit 29ff378

Browse files
authored
Merge pull request #348 from Deepak-Vohra/main
SQL-161 How to lock a single row in MySQL
2 parents 5a36a8c + 2a79685 commit 29ff378

File tree

6 files changed

+103
-0
lines changed

6 files changed

+103
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
SET TRANSACTION
2+
READ ONLY;
3+
4+
START TRANSACTION;
5+
SELECT *
6+
FROM DEPARTMENT
7+
WHERE id = 5
8+
FOR UPDATE;
9+
10+
SET TRANSACTION
11+
READ ONLY;
12+
START TRANSACTION;
13+
SELECT *
14+
FROM DEPARTMENT
15+
WHERE id = 5
16+
FOR SHARE;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
DESC DEPARTMENT;
2+
3+
SELECT *
4+
FROM DEPARTMENT;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// First Session
2+
START TRANSACTION;
3+
SELECT *
4+
FROM DEPARTMENT
5+
WHERE id = 5
6+
FOR SHARE;
7+
8+
// Second Session
9+
START TRANSACTION;
10+
SELECT *
11+
FROM DEPARTMENT
12+
WHERE id = 5
13+
FOR SHARE;
14+
15+
// Second Session
16+
SELECT *
17+
FROM DEPARTMENT
18+
WHERE id = 5
19+
FOR UPDATE;
20+
21+
// First Session
22+
COMMIT;
23+
24+
// Second Session
25+
START TRANSACTION;
26+
UPDATE DEPARTMENT
27+
SET code = 'MA'
28+
WHERE id < 5 OR id > 5;
29+
30+
SELECT *
31+
FROM DEPARTMENT;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// First Session
2+
START TRANSACTION;
3+
SELECT *
4+
FROM DEPARTMENT
5+
WHERE id = 5
6+
FOR UPDATE;
7+
8+
// Second Session
9+
SELECT *
10+
FROM DEPARTMENT
11+
WHERE id = 5
12+
FOR SHARE;
13+
14+
// First Session
15+
COMMIT;
16+
17+
// Second Session
18+
START TRANSACTION;
19+
UPDATE DEPARTMENT
20+
SET code = 'TEMP'
21+
WHERE id < 5 OR id > 5;
22+
23+
// First Session
24+
COMMIT
25+
// Second Session
26+
COMMIT;
27+
28+
SELECT *
29+
FROM DEPARTMENT;
30+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
SET
2+
TRANSACTION ISOLATION LEVEL SERIALIZABLE;
3+
START TRANSACTION;
4+
SELECT *
5+
FROM DEPARTMENT
6+
WHERE id = 5;
7+
COMMIT;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
START TRANSACTION;
2+
UPDATE DEPARTMENT
3+
SET code = 'MATH'
4+
WHERE id = 5;
5+
COMMIT;
6+
7+
INSERT
8+
INTO DEPARTMENT(id, name, code)
9+
VALUES(6, "Mathematics", "MA");
10+
11+
START TRANSACTION;
12+
DELETE
13+
FROM DEPARTMENT
14+
WHERE id = 6;
15+
COMMIT;

0 commit comments

Comments
 (0)