Su ostukorv on hetkel tühi!
SQL transaktsioonid

Transiit on kasutaja loogilises järjekorras tehtavate operatsioonide jada või programm, mis töötab BD-ga.
Transiit on BD muudatuste levik. Näiteks kui tekitame, muudame või kustutame kirje, siis teostame tehingu. Äärmiselt oluline on kontrollida transaktsioone garanteerimiseks.
Tehingu põhikontseptsioone kirjeldab lühend ACID –
- Atomicity – Atomaarsus
- Consistency – Kooskõla
- Isolation – Isoleeritus
- Durability – Pikaajalisus
Atomaarsus
Tagab, et igasugune tehing fikseeritakse ainult tervikuna (täielikult). Kui üks järjestikune operatsioon jääb tegemata, siis jääb kogu tehing ära. Siin tuuakse sisse mõiste “väljakukkumine” (rollback). St. jadasiseselt toimuvad teatud muudatused, kuid kokkuvõttes jäävad need kõik ära (“lukustatakse”) ja kokkuvõttes ei näe kasutaja mingeid muutusi.
Kooskõla
Kooskõla tähendab seda, et igasugune lõpetatud tehing (tehing, mis on jõudnud tehingu lõpule – end of transaction) fikseerib ainult lubatud tulemused. Näiteks raha ülekandmisel ühelt kontolt teisele, juhul kui raha on läinud ühelt kontolt, peavad need tulema teisele (see ongi süsteemi kooskõla). Allakirjutamine ja sissekirjutamine on kaks erinevat tehingut, seega esimene tehing möödub ilma vigadeta ja teist lihtsalt ei tule. Just seetõttu on äärmiselt oluline selle omadusega arvestada ja süsteemi tasakaalu hoida.
Isoleeritus
Iga tehing tuleb isoleerida teistest, st. selle tulemus ei tohiks sõltuda teiste paralleelsete tehingute tegemisest. Praktikas on isoleeritus äärmiselt raskesti saavutatav asi, mistõttu tuuakse siin sisse mõiste “eraldatuse tasemed” (tehingut ei isoleerita täielikult).
Pikaajalisus
See kontseptsioon tagab, et kui oleme saanud kinnituse tehingu tegemise kohta, siis ei tohiks sellest tehingust tingitud muudatusi süsteemi rikke tõttu ära jätta (nt elektritoite väljalülitamine).
Tehingute juhtimiseks kasutatakse järgmisi käske:
ROLLBACK
Veeretab (jätab ära) muudatused

Ilma tehingu alguseta ei ole võimalik selle tehingu tagasipööret teha
Transiit number 1
ROLLBACK;
--loome transaktion
BEGIN TRANSACTION;
INSERT INTO T(id, s) values(4,'fourth');
select * from T;
--tagasi võtmine
ROLLBACK;
select * from T;

Transiit number 2
--loome transaktiooni 2
BEGIN TRANSACTION;
DELETE FROM T where id=1;
select * from T;
--tagasi võtmine
ROLLBACK;
select * from T;

SQL juhend. Tehingud.
create table developers(
id int not null primary key identity(1,1),
name varchar(50),
specialty varchar(50),
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);
select * from developers

Transiit number 3
--loome transaktsiooni 3
begin transaction;
DELETE FROM developers
WHERE SPECIALTY = 'C++';
select * from developers;
ROLLBACK;
select * from developers
Ülesanne hinne 5
https://www.youtube.com/watch?v=shkt9Z5Gz-U
SQL
create Table tblMailingAddress
(
AddressId int NOT NULL primary key,
EmployeeNumber int,
HouseNumber nvarchar(50),
StreetAddress nvarchar(50),
City nvarchar(10),
PostalCode nvarchar(50));
Insert into tblMailingAddress values (1, 101, '#10', 'King Street', 'Londoon', 'CR27DW')
select * from tblMailingAddress;

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, 101, '#10', 'King Street', 'Londoon', 'CR27DW')

ROLLBACK TRANSACTION
create Procedure spUpdateAddress
as
Begin
Begin Try
Begin Transaction
Update tblMailingAddress set City = 'LONDON'
where AddressId = 1 and EmployeeNumber = 101
Update tblPhysicalAddress set City = 'LONDON'
where AddressId = 1 and EmployeeNumber = 101
Commit Transaction
End Try
Begin Catch
Rollback Transaction
End Catch
End
select * from tblPhysicalAddress;
select * from tblMailingAddress;

UPDATE TRANSACTION
Alter Procedure spUpdateAddress
as
Begin
Begin Try
Begin Transaction
Update tblMailingAddress set City = 'LONDON12'
where AddressId = 1 and EmployeeNumber = 101
Update tblPhysicalAddress set City = 'LONDON LONDON'
where AddressId = 1 and EmployeeNumber = 101
Commit Transaction
End Try
Begin Catch
Rollback Transaction
End Catch
End
select * from tblPhysicalAddress;
select * from tblMailingAddress;

XAMPP
create Table tblMailingAddress
(
AddressId int NOT NULL primary key,
EmployeeNumber int,
HouseNumber nvarchar(50),
StreetAddress nvarchar(50),
City nvarchar(10),
PostalCode nvarchar(50));
Insert into tblMailingAddress values (1, 101, '#10', 'King Street', 'Londoon', 'CR27DW')
select * from tblMailingAddress;

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, 101, '#10', 'King Street', 'Londoon', 'CR27DW')

ROLLBACK / UPDATE TRANSACTION


Lisa kommentaar