Triger (trigger) — protsess, mille abil tema sisse kirjutatud tegevused automaatselt käivitatakse.
create database trigerTARpv23;
use trigerTARpv23;
-- loome tabeli
CREATE TABLE toode(
toode int primary key identity(1,1),
toodeNimi varchar(50),
hind int);
-- loome tabeli, mis täidab triger
CREATE TABLE logi(
id int primary key identity(1,1),
kasutaja varchar(100),
kuupaev datetime,
sisestatudAndmed text);
Insert trigger — triger, mis jälgib(отслеживает) andmete lisamine tabelisse ja teeb vastava kirje tabelis logi
create trigger toodeLisamine
on toode -- tabel mis jälgitakse
for insert
as
insert into logi(kasutaja, kuupaev, sisestatudAndmed)
select
user,
getdate(),
concat('lisatud andmed', inserted.toodeNimi, ', ', inserted.hind)
from inserted
-- kontroll
-- kontrollimiseks lisame toode (admin)
insert into toode(toodeNimi, hind)
values ('ilus pirn', 30);
select * from toode;
select * from logi;
Trigger modify

Delete trigger
-- kustutamine
create trigger toodeKustutamine
on toode -- tabel mis jälgitakse
for delete
as
insert into logi(kasutaja, kuupaev, sisestatudAndmed)
select
user,
getdate(),
concat('lisatud andmed', deleted.toodeNimi, ', ', deleted.hind)
from deleted
-- kontrollimiseks kustutame toode tabelis toode
delete from toode
where toodeId=1;
select * from toode;
select * from logi;
Update trigger
create trigger toodeUuendamine
on toode -- tabel mis jälgitakse
for update
as
insert into logi(kasutaja, kuupaev, sisestatudAndmed)
select
user,
getdate(),
concat('Vanad andmed : ', deleted.toodenimi, ', ', deleted.hind, 'Uued andmed : ', inserted.toodenimi, ', ', inserted.hind)
from deleted inner join inserted
on deleted.toodeId=inserted.toodeId
-- kontrollimiseks uuendame toode
select * from toode;
update toode set toodeNimi='orange melon'
where toodeId=2;
select * from toode;
select * from logi;

Triggerid/ kasutajad SQL — Ülesanne «Papagoi liigid»
Database ja tabelid
create database papagoiLiigid;
use papagoiLiigid;
CREATE TABLE papagoi(
papagoiID int Primary key identity (1,1),
papagoi_tõug varchar (50),
varv varchar (20),
päritolukoht varchar (50));
SELECT * FROM papagoi;
CREATE TABLE logi(
logiID int primary key identity(1,1),
kasutaja varchar(100),
kuupaev datetime,
andmed text);
Insert trigger
create trigger papagoiLisamine
on papagoi -- tabel mis jälgitakse
for insert
as
insert into logi(kasutaja, kuupaev, andmed)
select
user,
getdate(),
concat('Lisatud andmed : ', inserted.papagoi_tõug, ', ', inserted.varv, ', ', inserted.päritolukoht)
from inserted
INSERT INTO papagoi(papagoi_tõug, varv, päritolukoht)
VALUES ('Macaw', 'Sinikollane', 'Central and South America'),
('Cockatoo', 'Valge', 'Indonesia'),
('African Grey Parrot', 'Hall', 'Western and Central Africa'),
('Amazon Parrot', 'Roheline', 'South and Central America'),
('Budgerigar', 'Roheline', 'Australia');
select * from papagoi;
select * from logi;

Delete trigger
create trigger papagoiKustutamine
on papagoi
for delete
as
insert into logi(kasutaja, kuupaev, andmed)
select
user,
getdate(),
concat('Kustutatud andmed : ', deleted.papagoi_tõug, ', ', deleted.varv, ', ', deleted.päritolukoht)
from deleted
-- kontrollimiseks kustutame toode tabelis toode
delete from papagoi
where papagoiID=11;
select * from papagoi;
select * from logi;

Update trigger
create trigger papagoiUuendamine
on papagoi
for update
as
insert into logi(kasutaja, kuupaev, andmed)
select
user,
getdate(),
concat('Vanad andmed : ', deleted.papagoi_tõug, ', ', deleted.varv, ', ', deleted.päritolukoht, 'Uued andmed : ', inserted.papagoi_tõug, ', ', inserted.varv, ', ', inserted.päritolukoht)
from deleted inner join inserted
on deleted.papagoiID=inserted.papagoiID
-- kontrollimiseks uuendame toode
select * from papagoi;
update papagoi set varv='Punane'
where papagoiID=15;
select * from papagoi;
select * from logi;

Uus kasutaja


Õigused
GRANT SELECT, INSERT, UPDATE ON papagoi to Lemmikloomapoe_direktor;



XAMPP trigerid
Päästik — триггер

INSERT

DELETE
insert into logi(kasutaja, kuupaev, sisestatudAndmed)
VALUES(
USER(),
now(),
concat('lisatud andmed', new.toodeNimi, ', ', new.hind))

insert into logi(kasutaja, kuupaev, sisestatudAndmed)
VALUES(
USER(),
now(),
concat('kustutatud andmed', old.toodeNimi, ', ', old.hind))

UPDATE

insert into logi(kasutaja, kuupaev, sisestatudAndmed)
VALUES(
USER(),
now(),
concat('vanad andmed', old.toodeNimi, ', ', old.hind, 'uued andmed', new.toodeNimi, ', ', nwe.hind))
Triggerid/ kasutajad XAMPP — Ülesanne «Papagoi liigid»
create database papagoiLiigid;
use papagoiLiigid;
CREATE TABLE papagoi(
papagoiID int Primary key AUTO_INCREMENT,
papagoi_tõug varchar (50),
varv varchar (20),
päritolukoht varchar (50));
SELECT * FROM papagoi;
CREATE TABLE logi(
logiID int primary key AUTO_INCREMENT,
kasutaja varchar(100),
kuupaev datetime,
andmed text);
DELETE

insert into logi2(kasutaja, kuupaev, andmed)
VALUES(
USER(),
now(),
concat('Kustutatud andmed : ', old.papagoi_tõug, ', ', old.varv, ', ', old.päritolukoht))
UPDATE

insert into logi2(kasutaja, kuupaev, andmed)
VALUES(
USER(),
now(),
concat('Vanad andmed : ', old.papagoi_tõug, ', ', old.varv, ', ', old.päritolukoht, 'Uued andmed : ', new.papagoi_tõug, ', ', new.varv, ', ', new.päritolukoht))
UUS KASUTAJA



Kasutaja kontroll

Lubatud
Vanad andmed : Budgerigar, Roheline, AustraliaUued andmed : Amazon Parrot, Roheline, South and Central America

Ei ole lubatud.

Kasutaja kontroll läbi rooti

Uus table ‘omanik’ ja fk SQL
Inser trigger
CREATE TABLE omanik(
omanikID int Primary KEY identity(1,1),
lemmikloom varchar (50),
omanikNimi varchar(100) UNIQUE);
INSERT INTO omanik(omanikNimi, lemmikloom)
VALUES ('Daria', 'Macaw');
INSERT INTO omanik(omanikNimi, lemmikloom)
VALUES ('Valeria', 'Cockatoo');
SELECT * FROM omanik
ALTER TABLE papagoi ADD omanikID int;
ALTER TABLE papagoi ADD CONSTRAINT fk_omanik
FOREIGN KEY (omanikID) References omanik(omanikID)
select * from papagoi ;
select * from omanik ;
create trigger papagoiLisamine
on papagoi
for insert
as insert into logi(kasutaja, aeg, toiming, andmed)
select user, getdate(), 'Papagoi on isatud', concat('Lisatud andmed : ',p.papagoi_tõug, ', ', o.omanikNimi)
from papagoi p
inner join omanik o
on o.omanikID=p.omanikID
--kontrollimiseks
INSERT INTO papagoi(papagoi_tõug, varv, päritolukoht, omanikID)
VALUES ('Macaw', 'Sinikollane', 'Central and South America', 1),
('Cockatoo', 'Valge', 'Indonesia', 2);

Delete trigger
-- kustutamine
create trigger papagoiKustutamine
on papagoi
for delete
as insert into logi(kasutaja, aeg, toiming, andmed)
select user, getdate(), 'Papagoi on kustutatud', concat(deleted.papagoi_tõug, ', ', o.omanikNimi)
from deleted
inner join omanik o
on deleted.omanikID=o.omanikID
--kontroll
delete from papagoi
where papagoiID=1;
select * from papagoi;
select * from logi;

Update trigger
-- uuesndamine
create trigger papagoiUuendamine
on papagoi
for update
as
insert into logi(kasutaja, aeg, toiming, andmed)
select user, getdate(), 'Papagoi on uuendatud', concat('Vanad andmed : ', deleted.papagoi_tõug, ', ', o1.omanikNimi,
'Uuendanud andmed : ', inserted.papagoi_tõug, ', ', o2.omanikNimi)
from deleted
inner join inserted on deleted.papagoiID=inserted.papagoiID
inner join omanik o1 on deleted.omanikID=o1.omanikID
inner join omanik o2 on inserted.omanikID=o2.omanikID;
update papagoi set papagoi_tõug='African Grey Parrot', omanikID=4
where papagoiID=5;
select * from papagoi;
select * from logi;

Uus table ‘omanik’ ja fk XAMPP
CREATE TABLE omanik(
omanikID int Primary KEY AUTO_INCREMENT,
lemmikloom varchar (50),
omanikNimi varchar(100) UNIQUE);
INSERT INTO omanik(omanikNimi, lemmikloom)
VALUES ('Daria', 'Macaw');
INSERT INTO omanik(omanikNimi, lemmikloom)
VALUES ('Valeria', 'Cockatoo');
SELECT * FROM omanik
ALTER TABLE papagoi ADD omanikID int;
ALTER TABLE papagoi ADD CONSTRAINT fk_omanik
FOREIGN KEY (omanikID) References omanik(omanikID)

Inser trigger

Delete trigger

Update trigger


Добавить комментарий