etru_RU

SQL тригеры

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


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *