1 ЗАДАНИЕ
Транзакция, которая удаляет из таблицы developers людей со специальностью C# и после отменяет действия
SET AUTOCOMMIT=0; START TRANSACTION; SELECT * FROM developers; DELETE FROM developers WHERE SPECIALTY = 'C#'; SELECT * FROM developers; ROLLBACK; SELECT * FROM developers;



Создаем транзакцию, ставим точку сохранения под названием SP1, удаляем из таблицы developers людей с ID 11,12,13 и после этого возвращается на точку сохранения SP1
SET AUTOCOMMIT=0; START TRANSACTION; SAVEPOINT SP1; SELECT * FROM developers; DELETE FROM developers WHERE ID = 11; DELETE FROM developers WHERE ID = 12; DELETE FROM developers WHERE ID = 13; SELECT * FROM developers; ROLLBACK TO SP1; SELECT * FROM developers;



2 ЗАДАНИЕ
Создаем транзакцию, делаем запрос на обновление информации в таблице и где ProductID = 1, то заменяем на QtyAvailbable = 200
SELECT * FROM tblProduct; BEGIN TRANSACTION UPDATE tblProduct set QtyAvailable = 200 WHERE ProductID=1 SELECT * FROM tblProduct; Rollback Transaction SELECT * FROM tblProduct;

Процедура spUpdateAddress которая изменяет адрес на LONDON1 в tblMailinAddress и на LONDON LONDON в tblPhysicalAddress при вызове процедуры. В процедуре используется try catch, чтобы в случае если ты сделал ошибку, то изменения откатились
CREATE PROCEDURE spUpdateAddress
as
Begin
Begin try
Begin transaction
Update tblMailinAddress set City='LONDON1'
WHERE AddressID = 1 and EmployeeNumber = 101
Update tblPhysicalAddress set City='LONDON LONDON'
WHERE AddressID = 1 and EmployeeNumber = 101
Commit Transaction
print 'Transaction commited'
END try
Begin catch
Rollback transaction
Print 'Transaction Rolled Back'
END catch
END
Вызовы процедуры:
exec spUpdateAddress; select * from tblPhysicalAddress; select * from tbMailinAddress
