Транзакция – это последовательность операций, выполняемых в логическом порядке пользователем, либо программой, которая работает с БД.
Транзакция – это распространение изменений в БД. Например, если мы создаём, изменяем или удаляем запись, то мы выполняем транзакцию. Крайне важно контролировать транзакции для гарантирования.
Основные концепции транзакции описываются аббревиатурой ACID –
- Atomicity – Атомарность
- Consistency – Согласованность
- Isolation – Изолированность
- Durability – Долговечность
Атомарность – гарантирует, что любая транзакция будет зафиксирована только целиком (полностью)
Согласованность – Согласованность означает, что любая завершённая транзакция ( транзакция, которая достигла завершения транзакции ) фиксирует только допустимые результаты. Например, при переводе денег с одного счёта на другой, в случае, если деньги ушли с одного счёта, они должны прийти на другой (это и есть согласованность системы)
Изолированность – Каждая транзакция должна быть изолирована от других, т.е. её результат не должен зависеть от выполнения других параллельных транзакций
Долговечность – Эта концепция гарантирует, что если мы получили подтверждение о выполнении транзакции, то изменения, вызванные этой транзакцией не должны быть отменены из-за сбоя системы (например, отключение электропитания)
Для управления транзакциями используются следующие команды:
- COMMIT
Сохраняет изменения - ROLLBACK
Откатывает (отменяет) изменения - SAVEPOINT
Создаёт точку к которой группа транзакций может откатиться - SET TRANSACTION
Размещает имя транзакции.
create database transaktTARpv24
use transaktTARpv24
create table T(
id int not null primary key,
s varchar(40),
si smallint);
insert into T(id,s) values (1, 'first')
insert into T(id,s) values (2, 'second')
insert into T(id,s) values (3, 'third')
select * from T
--- tagasi võtmine
rollback
--- salvestame transaktsiooni
begin transaction;
insert into T(id,s) values (4, 'fourth')
select * from T
--- tagasi võtmine
rollback;
select * from T
--- kustutame 1. rida ja võtame tagasi
begin transaction
delete from T where id=1
select * from T
rollback
select * from T
--- uuendame terve tabeli ja si=5 ja võtame tagasi
begin transaction
update T set si=5
select * from T
rollback
select * from T


XAMPP :
start TRANSACTION;
SAVEPOINT SP1;
select * from T;
update T set si=5;
select * from T;
rollback TO SAVEPOINT SP1;
select * from T;



————————————–Ülesanne transaktsioonid———————————————-
1)https://proselyte.net/tutorials/sql/sql-transactions/
Tabel developers

Esimene transaction

Teine transaction savepoint sp1

2)https://www.youtube.com/watch?v=shkt9Z5Gz-U
Tabelid tblMailingAddress & tblPhysicalAddress

Procedure & transaction spUpdateAddress


Alter procedure spUpdateAddress


XAMPP :
Tabelid tblPhysicalAddress & tblMailingAddress


Procedure & transaction spUpdateAddress
DELIMITER $$
CREATE PROCEDURE spUpdateAddress()
BEGIN
START TRANSACTION;
UPDATE tblMailingAddress
SET City = 'LONDON'
WHERE AddressId = 1 AND EmployeeNumber = 101;
UPDATE tblPhysicalAddress
SET City = 'LONDON'
WHERE AddressId = 1 AND EmployeeNumber = 101;
COMMIT;
END $$
DELIMITER ;




Alter procedure spUpdateAddress
DELIMITER $$
DROP PROCEDURE IF EXISTS spUpdateAddress $$
CREATE PROCEDURE spUpdateAddress()
BEGIN
START TRANSACTION;
UPDATE tblMailingAddress
SET City = 'LONDON12'
WHERE AddressId = 1 AND EmployeeNumber = 101;
SELECT * FROM tblMailingAddress;
UPDATE tblPhysicalAddress
SET City = 'LONDON LONDON'
WHERE AddressId = 1 AND EmployeeNumber = 101;
COMMIT;
END $$
DELIMITER ;






