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;
--rollback ei tööta kuna transaktioon ei ole alustanud;
ROLLBACK;
--alustame transaktsiooni
begin Transaction;
insert into T(id, s) Values (4,'fourth');
select * from T;
--võtame tagasi viimane sisestus
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;
--uuendamine ja tagasi võtmine
begin Transaction;
UPDATE T SET si=3 Where id=1;
select * from T;
ROLLBACK;
select * from T;
Пример 2 XAMPP(https://proselyte.net/tutorials/sql/sql-transactions/)
Команда, для того, чтобы отключить автоматическое выполнение транзакции:
1
SET autocommit=0;
CREATE TABLE developers(
id int not null primary key,
name varchar(40),
specialty varchar(40),
experience int,
salary int
);
insert into developers(id, name, specialty, experience, salary) values (1, "Eugene Suleimanov", "Java", 2, 2500);
insert into developers(id, name, specialty, experience, salary) values (2, "Peter Romanenko", "Java", 3, 3500);
insert into developers(id, name, specialty, experience, salary) values (3, "Andrei Komarov", "C++", 3, 2500);
insert into developers(id, name, specialty, experience, salary) values (4, "Konstantin Geiko", "C#", 2, 2000);
insert into developers(id, name, specialty, experience, salary) values (5, "Asya Suleimanova", "UI/UX", 2, 1800);
insert into developers(id, name, specialty, experience, salary) values (7, "Ivan Ivanov", "C#", 1, 900);
insert into developers(id, name, specialty, experience, salary) values (8, "Ludmila Geiko", "UI/UX", 2, 1800);
--ROLLBACK не работает(на данный момент)
SET AUTOCOMMIT=0;
START TRANSACTION;
DELETE FROM developers
WHERE SPECIALTY = 'C++';
SELECT * FROM developers;
COMMIT;
ROLLBACK;
SELECT * FROM developers;
START TRANSACTION;
SAVEPOINT SP2;
SELECT * FROM T;
UPDATE T SET si=5;
SELECT * FROM T;
ROLLBACK TO SAVEPOINT SP2;
SELECT * FROM T;