Triger oma ülesanne

SQL Server

create table klass(
id int primary key identity(1,1),
mahutavus int,
korpus char(1),
olek varchar(40),
oppiaine varchar(40)
);
loonud tabel klass
create table logi(
    id int PRIMARY key identity(1,1),
    kuupaev datetime,
    toiming varchar(100),
	andmed TEXT);
loonud tabel logi

Triger mis jälgib INSERT

create trigger klassLisamine
on klass
for insert
as
insert into logi(kuupaev, toiming, andmed)
select GETDATE(), 
CONCAT(inserted.mahutavus, ', ', inserted.korpus, ', ', inserted.olek, ', ', inserted.oppiaine),
'klass on lisatud'
from inserted
--kontroll

insert into klass(mahutavus,korpus,olek,oppiaine)
values(30,'A','remonditud','fyysika');
select * from klass;
select * from logi;

Triger mis jälgib UPDATE

create trigger klassUuendamine
on klass
for update
as
insert into logi(kuupaev, toiming, andmed)
select GETDATE(), 
CONCAT('VANAD - ', deleted.mahutavus, ', ', deleted.korpus, ', ', deleted.olek, ', ', deleted.oppiaine,
' UUED - ', inserted.mahutavus, ', ', inserted.korpus, ', ', inserted.olek, ', ', inserted.oppiaine),
'klass on uuendatud'
from deleted INNER JOIN inserted
on  deleted.id = inserted.id
--kontroll

select * from klass
update klass SET oppiaine = 'bioloogia'
where id = 1;
select * from klass;
select * from logi;
1. tabel mis oli
2. tabel mis oli uuendatud
3. logi andmed

Triger mis jälgib DELETE

create trigger klassKustutamine
on klass
for delete
as
insert into logi(kuupaev, toiming, andmed)
select GETDATE(), 
CONCAT(deleted.mahutavus, ', ', deleted.korpus, ', ', deleted.olek, ', ', deleted.oppiaine),
'klass on kustutatud'
from deleted
--kontroll

delete from klass
where id=2;
select * from klass;
select * from logi;
1. tabel klass näitab praegu andmed
2. näitab logis mis juhtus viimase andmega tabelist klass

Protseduurid

Lisamine ehk insert

--Andmete lisamine Protseduur
use Klass;
go
create procedure Lisamineklass
@mahutavus int,
@korpus char(1),
@olek varchar(40),
@oppiaine varchar(40)
as
begin
insert into klass(mahutavus,korpus,olek,oppiaine)
values(@mahutavus, @korpus, @olek, @oppiaine);
select * from klass;
select * from logi;
end

exec Lisamineklass @mahutavus = 35, @korpus = 'B', @olek = 'remonditud', @oppiaine = 'ajalugu'
1. klass tabelise on lisatud andmed
2. logi tabelis on kirjutatud mis juhtus tabelis klass

Kuva kõik nimega

use Klass;
go
create procedure Otsingklass
@taht char(1)
as
begin
select * from klass
where oppiaine like @taht + '%';
end
 
exec Otsingklass @taht='b'

Kustuta id järgi

use Klass;
go
create procedure Kustutaklass
@kustutaID int
as
begin
select * from klass;
 
delete from klass
where id=@kustutaID;
 
select * from klass;
select * from logi;
end
 
exec Kustutaklass @kustutaID=3;
1. klass tabel mis oli
2. klass tabel pärast kustutamist
3. logi tabeli sisu pärast klass tabeli kustutamist

XAMPP

create table klass(
id int primary key AUTO_INCREMENT,
mahutavus int,
korpus char(1),
olek varchar(40),
oppiaine varchar(40)
);
loonud tabel klass
create table logi(
    id int PRIMARY key AUTO_INCREMENT,
    kuupaev datetime,
    toiming varchar(100),
	andmed TEXT);
loonud tabel logi

Triger mis jälgib lisamist

insert into logi(kuupaev, andmed, toiming)
values (NOW(),
        Concat(NEW.mahutavus, ', ', NEW.korpus, ', ', NEW.olek, ', ', NEW.oppiaine),
        'klass on lisatud')
insert into klass(mahutavus,korpus,olek,oppiaine)
values(30,'A','remonditud','fyysika');
lisatud anmed tabelise klass
logi sisu on uuendatud

Triger mis jälgib kustutamist

insert into logi(kuupaev, andmed, toiming)
values(NOW(),
       Concat(OLD.mahutavus, ', ', OLD.korpus, ', ', OLD.olek, ', ', OLD.oppiaine),
       'klass on kustutatud')
delete from klass
where id=1;
select * from klass;
select * from logi;
tabel klass sisu
logi tabeli sisu

Triger mis jälgib uuendamist

insert into logi(kuupaev, andmed, toiming)
values (NOW(), 
        Concat('vanad andmed: ',OLD.mahutavus, ', ', OLD.korpus, ', ', OLD.olek, ', ', OLD.oppiaine,
              '\n uued andmed: ',NEW.mahutavus, ', ', NEW.korpus, ', ', NEW.olek, ', ', NEW.oppiaine),
        'klass on uuendatud')
update klass SET oppiaine = "ajalugu"
Where id = 2;
select * from klass;
select * from logi;
klass tabeli uuendamine pärast ülevat koodi
logi tabeli sisu uuendamine pärast klass tabeli muutmist

Protseduurid

Lisamise protseduur

CALL Lisaklass(40, 'B', 'remonditud', 'eestikeel'); 
oleme kutstunud metoodi Lisaklass sisestatud andmetega ja näeme seda klass tabelis
logi tabeli sisu on uuendatud

Kuva kõik nimega

call Otsingklass('a')

Kustuta id järgi

oleme kustutanud andme tabelist klass