SQL Triger

Triger – Päästik

Triger see on protsess, millega abil kõik sisse kirjutatud tegevused tehakse automaatselt.

Näiteks, trigeri abil kasutaja saab jälgida mis tegevused olid tehtud andmebaasis (INSERT, UPDATE, DELETE)

Table logi

CREATE TABLE logi(
	id int PRIMARY KEY AUTO_INCREMENT,
    kuupaev datetime,
    kasutaja varchar(100),
    andmed TEXT,
    tegevus varchar(100)
);

XAMPP

Triger mis jälgib lisatud tabelisse andmed

Triger mis jälgib kustutatud tabelisse andmed

Triger mis jälgib uuendatud tabelisse andmed

3 trigerit room tabel


SQL Server

Triger mis jälgib lisatud tabelisse andmed

CREATE TRIGGER guestLisamine
ON guest 
FOR INSERT
AS
INSERT INTO logi(kuupaev,kasutaja,andmed,tegevus)
SELECT GETDATE(), USER, 
CONCAT(inserted.first_name,', ',inserted.last_name,', ',' ,',inserted.member_since),'guest on lisatud'
FROM inserted
--kontroll
INSERT INTO guest(first_name,last_name,member_since) VALUES('Timur','Denisenko','2022-5-6');
select * from guest;
select * from logi;

Triger mis jälgib kustutatud tabelisse andmed

CREATE TRIGGER guestKustuta
ON guest 
FOR DELETE
AS
INSERT INTO logi(kuupaev,kasutaja,andmed,tegevus)
SELECT GETDATE(), USER, 
CONCAT(deleted.first_name,', ',deleted.last_name,', ',' ,',deleted.member_since),'guest on kustutatud'
FROM deleted
--kontroll
DELETE from guest where guest_id=1;
select * from guest;
select * from logi;

Triger mis jälgib uuendatud tabelisse andmed

CREATE TRIGGER guestUuendamine
ON guest 
FOR UPDATE
AS
INSERT INTO logi(kuupaev,kasutaja,andmed,tegevus)
SELECT GETDATE(), USER, 
CONCAT('vanad andmed: ',deleted.first_name,', ',deleted.last_name,', ',' ,',deleted.member_since,
'\n uued andmed: ',inserted.first_name,', ',inserted.last_name,', ',' ,',inserted.member_since),'guest on uuendatud'
FROM deleted INNER JOIN inserted
ON deleted.guest_id=inserted.guest_id
--kontroll
select * from guest;
update guest set first_name='Timur' where guest_id=2;
select * from guest;
select * from logi;

3 Trigerit

CREATE TRIGGER roomLisamine
ON room 
FOR INSERT
AS
INSERT INTO logi(kuupaev,kasutaja,andmed,tegevus)
SELECT GETDATE(), USER, 
CONCAT(inserted.number,', ',inserted.name,', ',' ,',inserted.status,', ',inserted.smoke),'room on lisatud'
FROM inserted
--kontroll
INSERT INTO room(number,name,status,smoke) VALUES('505','akula','vaba',1);
select * from room;
select * from logi;
CREATE TRIGGER roomKustuta
ON room 
FOR DELETE
AS
INSERT INTO logi(kuupaev,kasutaja,andmed,tegevus)
SELECT GETDATE(), USER, 
CONCAT(deleted.number,', ',deleted.name,', ',' ,',deleted.status,', ',deleted.smoke),'room on kustutatud'
FROM deleted
--kontroll
select * from room;
DELETE from room where room_id=3;
select * from room;
select * from logi;
CREATE TRIGGER roomUuendamine
ON room 
FOR UPDATE
AS
INSERT INTO logi(kuupaev,kasutaja,andmed,tegevus)
SELECT GETDATE(), USER, 
CONCAT('vanad andmed: ',deleted.number,', ',deleted.name,', ',' ,',deleted.status,', ',deleted.smoke,
'\n uued andmed: ',inserted.number,', ',inserted.name,', ',' ,',inserted.status,', ',inserted.smoke),'room on uuendatud'
FROM deleted INNER JOIN inserted
ON deleted.room_id=inserted.room_id
--kontroll
select * from room;
update room set number='999' where room_id=4;
select * from room;
select * from logi;