SQL Transaktsioonid

Транзакция — это последовательность операций, выполняемых в логическом порядке пользователем, либо программой, которая работает с БД.

Транзакция – это распространение изменений в БД. Например, если мы создаём, изменяем или удаляем запись, то мы выполняем транзакцию. Крайне важно контролировать транзакции для гарантирования.

Основные концепции транзакции описываются аббревиатурой 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 ;

Warning: Undefined array key "sfsi_facebook_display" in /data01/virt140713/domeenid/www.martinrossakov24.thkit.ee/htdocs/wp/wp-content/plugins/ultimate-social-media-icons/libs/controllers/sfsiocns_OnPosts.php on line 450