https://lastovski21.thkit.ee/wp/sql-transaktsionid/ (конспект)
1. MySQL – Выполнить пример со следующей страницы https://proselyte.net/tutorials/sql/sql-transactions/
/*Создание и заполнение таблицы*/
CREATE TABLE developers(
id int not null primary key,
names varchar(50) not null,
specialty varchar(20),
experience int,
salary decimal(7,2))
INSERT INTO developers(id, names, specialty, experience, salary)
VALUES(1, 'Eugene Suleimanov', 'Java', 2, 2500);
INSERT INTO developers(id, names, specialty, experience, salary)
VALUES(2, 'Peter Romanenko', 'Java', 3, 3500);
INSERT INTO developers(id, names, specialty, experience, salary)
VALUES(3, 'Andrei Komarov', 'C++', 3, 2500);
INSERT INTO developers(id, names, specialty, experience, salary)
VALUES(4, 'Konstantin Geiko', 'C#', 2, 2000);
INSERT INTO developers(id, names, specialty, experience, salary)
VALUES(5, 'Asya Suleimanova', 'UI/UX', 2, 1800);
INSERT INTO developers(id, names, specialty, experience, salary)
VALUES(7, 'Ivan Ivanov', 'C#', 1, 900);
INSERT INTO developers(id, names, specialty, experience, salary)
VALUES(8, 'Ludmila Geiko', 'UI/UX', 2, 1800);
/*Пример транзакции в SSMS и LocalHost*/
SSMS
begin transaction;
DELETE FROM developers
WHERE specialty = 'C++';
SELECT * FROM developers;
ROLLBACK;
SELECT * FROM developers;
LocalHost
start transaction;
DELETE FROM developers
WHERE specialty = 'C++';
SELECT * FROM developers;
ROLLBACK;
SELECT * FROM developers;

/*Пример работы SAVEPOINT на LocalHost*/
START TRANSACTION;
SAVEPOINT SP1; /*Создание точки*/
SELECT * from developers;
DELETE FROM developers WHERE id = 1;
SELECT * FROM developers;
ROLLBACK TO SP1; /*Откат до точки SP1*/
SELECT * FROM developers;



2. SQL Server – найти на youtube.com видео относительно SQL транзакции и применить его к своей БД
/*Создание процедуры по видео*/
Create Procedure spUpdateSallary
as
Begin /*Начало процедуры*/
Begin Try /*Попробуй выполнить*/
Begin Transaction
/*Добавляет к зарплате 500, где опыт работы больше или равен 3 годам*/
Update developers set salary = salary + 500
where experience >= 3
/*Добавляет к зарплате 200, где опыт работы меньше или равен 2 годам*/
Update developers set salary = salary + 200
where experience <= 2
/*Также добавляет к зарплате 50 всем работникам на языке C#*/
Update developers set salary = salary + 50
where specialty = 'C#'
Commit Transaction
End Try /*Если возникла ошибка*/
Begin Catch /*То запускается этот блок*/
Rollback Transaction /*Возвращает изменения*/
End Catch
End /*Конец процедуры*/
/*Запуск и проверка процедуры*/
select * from developers;
exec spUpdateSallary;
select * from developers;

