diff --git a/sql-queries-11/lock-single-row-mysql/access-mode-significance.sql b/sql-queries-11/lock-single-row-mysql/access-mode-significance.sql new file mode 100644 index 00000000..f4510dc2 --- /dev/null +++ b/sql-queries-11/lock-single-row-mysql/access-mode-significance.sql @@ -0,0 +1,16 @@ +SET TRANSACTION +READ ONLY; + +START TRANSACTION; +SELECT * +FROM DEPARTMENT +WHERE id = 5 +FOR UPDATE; + +SET TRANSACTION +READ ONLY; +START TRANSACTION; +SELECT * +FROM DEPARTMENT +WHERE id = 5 +FOR SHARE; diff --git a/sql-queries-11/lock-single-row-mysql/prereq-setup.sql b/sql-queries-11/lock-single-row-mysql/prereq-setup.sql new file mode 100644 index 00000000..5fb5ef83 --- /dev/null +++ b/sql-queries-11/lock-single-row-mysql/prereq-setup.sql @@ -0,0 +1,4 @@ +DESC DEPARTMENT; + +SELECT * +FROM DEPARTMENT; diff --git a/sql-queries-11/lock-single-row-mysql/select-for-share.sql b/sql-queries-11/lock-single-row-mysql/select-for-share.sql new file mode 100644 index 00000000..468b0879 --- /dev/null +++ b/sql-queries-11/lock-single-row-mysql/select-for-share.sql @@ -0,0 +1,31 @@ +// First Session +START TRANSACTION; +SELECT * +FROM DEPARTMENT +WHERE id = 5 +FOR SHARE; + +// Second Session +START TRANSACTION; +SELECT * +FROM DEPARTMENT +WHERE id = 5 +FOR SHARE; + +// Second Session +SELECT * +FROM DEPARTMENT +WHERE id = 5 +FOR UPDATE; + +// First Session +COMMIT; + +// Second Session +START TRANSACTION; +UPDATE DEPARTMENT +SET code = 'MA' +WHERE id < 5 OR id > 5; + +SELECT * +FROM DEPARTMENT; diff --git a/sql-queries-11/lock-single-row-mysql/select-for-update.sql b/sql-queries-11/lock-single-row-mysql/select-for-update.sql new file mode 100644 index 00000000..afe33e81 --- /dev/null +++ b/sql-queries-11/lock-single-row-mysql/select-for-update.sql @@ -0,0 +1,30 @@ +// First Session +START TRANSACTION; +SELECT * +FROM DEPARTMENT +WHERE id = 5 +FOR UPDATE; + +// Second Session +SELECT * +FROM DEPARTMENT +WHERE id = 5 +FOR SHARE; + +// First Session +COMMIT; + +// Second Session +START TRANSACTION; +UPDATE DEPARTMENT +SET code = 'TEMP' +WHERE id < 5 OR id > 5; + +// First Session +COMMIT +// Second Session +COMMIT; + +SELECT * +FROM DEPARTMENT; + diff --git a/sql-queries-11/lock-single-row-mysql/transaction-isolation-level-significance.sql b/sql-queries-11/lock-single-row-mysql/transaction-isolation-level-significance.sql new file mode 100644 index 00000000..fb8d1561 --- /dev/null +++ b/sql-queries-11/lock-single-row-mysql/transaction-isolation-level-significance.sql @@ -0,0 +1,7 @@ +SET +TRANSACTION ISOLATION LEVEL SERIALIZABLE; +START TRANSACTION; +SELECT * +FROM DEPARTMENT +WHERE id = 5; +COMMIT; diff --git a/sql-queries-11/lock-single-row-mysql/update-delete-insert.sql b/sql-queries-11/lock-single-row-mysql/update-delete-insert.sql new file mode 100644 index 00000000..9c0db567 --- /dev/null +++ b/sql-queries-11/lock-single-row-mysql/update-delete-insert.sql @@ -0,0 +1,15 @@ +START TRANSACTION; +UPDATE DEPARTMENT +SET code = 'MATH' +WHERE id = 5; +COMMIT; + +INSERT +INTO DEPARTMENT(id, name, code) +VALUES(6, "Mathematics", "MA"); + +START TRANSACTION; +DELETE +FROM DEPARTMENT +WHERE id = 6; +COMMIT;