Skip to content

Commit 5ab59a9

Browse files
authored
Update DataModels-Databases.md
1 parent feade74 commit 5ab59a9

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

DataModels-Databases.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,30 @@
8686

8787
Пусть деньги переводятся с одного счёта на другой. Используются две основные операции: вывод денег с одного счёта `1000$ - 100$ = 400$`, зачисление их на другой счёт `500$ + 100$ = 600$`. Если первая операция удалась, а вторая нет, то происходит откат, поскольку в противном случае имеем несогласованность (inconsistency) данных до и после транзакции: до транзакции на счетах в сумме было `1500$`, после — `1400$`.
8888

89+
### Пример транзакции на SQL
90+
91+
```sql
92+
BEGIN TRANSACTION;
93+
94+
-- Операция 1
95+
INSERT INTO Employees (EmployeeID, FirstName, LastName, Position, Salary)
96+
VALUES (104, 'Петр', 'Петров', 'Разработчик', 80000);
97+
98+
-- Установка точки сохранения
99+
SAVEPOINT AfterInsert;
100+
101+
-- Операция 2
102+
UPDATE Employees
103+
SET Salary = Salary * 1.05
104+
WHERE EmployeeID = 104;
105+
106+
-- Возникла ошибка, откат к точке сохранения
107+
ROLLBACK TO SAVEPOINT AfterInsert;
108+
109+
-- Фиксация транзакции
110+
COMMIT;
111+
```
112+
89113
### Уровни изолированности транзакций (Transaction Isolation Levels)
90114
**Уровни изолированности транзакций** (англ. `Transaction Isolation Levels`) — фундаментальная концепция в реляционных базах данных, которая определяет, как транзакции изолированы друг от друга и какие “аномалии” могут или не могут возникнуть при одновременном доступе к данным.
91115

@@ -107,7 +131,7 @@ START TRANSACTION;
107131

108132
### Аномалии
109133
* **Грязное чтение** (англ. `Dirty read`) - транзакции читают данные, которые ещё не подтверждены другой транзакцией.
110-
* **Неповторябщееся чтение** (англ. `Non-repeatable read`) - повторное чтение тех же данных возвращает различные значения.
134+
* **Неповторяющееся чтение** (англ. `Non-repeatable read`) - повторное чтение тех же данных возвращает различные значения.
111135
* **Фантомное чтение** (англ. `Phantom read`) - повторное чтение тех же данных возвращает новые строки, добавленные другой транзакцией.
112136

113137
### Выбор уровня изолированности

0 commit comments

Comments
 (0)