SQL transaktsioonid

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

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

Transaktsioonid on loogilises järjekorras toimingute jada, mida kasutaja või andmebaasiga töötav programm teeb.

Transaktsioonid on muudatuste levitamine andmebaasis. Näiteks kui me loome, muudame või kustutame kirje, siis sooritame tehingu. Tehingute kontrollimine on äärmiselt oluline kindlustunde tagamiseks.

Основные концепции транзакции описываются аббревиатурой ACID

  • Atomicity – Атомарность
  • Consistency – Согласованность
  • Isolation – Изолированность
  • Durability – Долговечность
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;
begin transaction;
insert into T(id,s) 
values (4,'fourth');

select * from T;
--tegevuse tagasi võtmine
rollback;
select * from T;
begin transaction;
delete from T where id>1;
select * from T;
--tegevuse tagasi võtmine
rollback;
select * from T;

XAMPP

START TRANSACTION; 

INSERT INTO T (id, s) VALUES (4, 'fourth'); 

SELECT * FROM T ; 

ROLLBACK; 

SELECT * FROM T; 
SET AUTOCOMMIT = 0;  / 
DELETE FROM T WHERE id > 1; 

COMMIT; 

Ülesanne

1. MySQL – Выполнить пример со следующей страницы https://proselyte.net/tutorials/sql/sql-transactions/

2. SQL Server – найти на youtube.com видео относительно SQL транзакции и применить его к своей БД

3. в конспект на wordpress добавить ссылку на найденное и просмотренное видео и описание проделанной работы.

hinne 5

-- создание таблицы developers 
CREATE TABLE developers (
ID int primary key auto_increment,
NAME varchar(40) NOT NULL,
SPECIALTY char(10) NOT NULL,
EXPERIENCE int,
SALARY int
); 
--заполнение таблицы
INSERT INTO developers(NAME, SPECIALTY, EXPERIENCE, SALARY)
VALUES('Eugene Suleimanov', 'Java', 2, 2500);
INSERT INTO developers(NAME, SPECIALTY, EXPERIENCE, SALARY)
VALUES('Peter Romanenko', 'Java', 3, 3500);
INSERT INTO developers(NAME, SPECIALTY, EXPERIENCE, SALARY)
VALUES('Andrei Komarov', 'C++', 3, 2500);
INSERT INTO developers(NAME, SPECIALTY, EXPERIENCE, SALARY)
VALUES('Konstantin Geiko', 'C#', 2, 2000);
INSERT INTO developers(NAME, SPECIALTY, EXPERIENCE, SALARY)
VALUES('Asya Suleimanova', 'UI/UX', 2, 1800);
INSERT INTO developers(NAME, SPECIALTY, EXPERIENCE, SALARY)
VALUES('Ivan Ivanov', 'C#', 1, 900);
INSERT INTO developers(NAME, SPECIALTY, EXPERIENCE, SALARY)
VALUES('Ludmila Geiko', 'UI/UX', 2, 1800);
--удаление по специальности С++
SET autocommit=0;
DELETE FROM developers 
       WHERE SPECIALTY = 'C++';
COMMIT;
--откат
ROLLBACK;
--сохранение и удаление с 5 по 7 ID
SAVEPOINT SP1;
DELETE FROM developers WHERE ID = 7;
Query OK, 1 row affected (0.00 sec)

DELETE FROM developers WHERE ID = 6;
Query OK, 1 row affected (0.02 sec)

DELETE FROM developers WHERE ID = 5;
Query OK, 1 row affected (0.00 sec)
--откат к сохранению
ROLLBACK TO SP1;
RELEASE SAVEPOINT SP1;
SET TRANSACTION READ ONLY;

SET TRANSACTION READ WRITE;

Video ülesanne

Create Table tblMailingAddress
(
   AddressId int NOT NULL primary key,
   EmployeeNumber int,
   HouseNumber nvarchar(50),
   StreetAddress nvarchar(50),
   City nvarchar(10),
   PostalCode nvarchar(50)
)



Create Table tblPhysicalAddress
(
 AddressId int NOT NULL primary key,
 EmployeeNumber int,
 HouseNumber nvarchar(50),
 StreetAddress nvarchar(50),
 City nvarchar(10),
 PostalCode nvarchar(50)
)


Insert into tblPhysicalAddress values (1, 696, '#96', 'Laulaväljak', 'Tallinn', '576192HJ')