Triger (päästik)

Protsess, mille käigus toimingud, mis on sinna salvestatud, sooritatakse automaatselt.
Näiteks, Trigeri abil kasutaja saab jälgida mis tegevused oli tehtud andmebassis (INSERT, UPDATE, DELETE)

Процесс, при помощи которого записанные в него действия будут выполнятся автоматически
Например, Триггер поможет узнать что сделал пользователь в базе данных (INSERT, UPDATE, DELETE)

XAMPP

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

INSERT
mis jälgib lisatud tabelisse andmed

INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
VALUES (NOW(), USER(),
        Concat(NEW.last_name, ', ', NEW.first_name, ', ', NEW.member_since),
        'guest on lisatud')

DELETE
mis jälgib kustatud tabelisse andmed

INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
VALUES (NOW(), USER(),
        Concat(OLD.last_name, ', ', OLD.first_name, ', ', OLD.member_since),
        'guest on kustutanud')

DELETE guest
WHERE id=1;
SELECT * FROM guest;
SELECT * FROM logi;

UPDATE
mis jälgib uuendanud tabelisse andmed

INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
VALUES (NOW(), USER(),
        Concat('vanad andmed: ', OLD.last_name, ', ', OLD.first_name, ', ', OLD.member_since,
              ' \n UUED ANDMED: ', NEW.last_name, ', ', NEW.first_name, ', ', NEW.member_since),
        'guest on uuendatud')
UPDATE guest SET first_name="Luca"
WHERE id=1;
SELECT * FROM guest;
SELECT * FROM logi;
CREATE TABLE room(
    id int not null PRIMARY KEY AUTO_INCREMENT,
    number varchar(10),
    name varchar(40),
	status varchar(10),
	smoke bit)

INSERT

INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
VALUES (NOW(), USER(),
        Concat(NEW.number, ', ', NEW.name, ', ', NEW.status, ', ', NEW.smoke),
        'guest on lisatud')

DELETE

INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
VALUES (NOW(), USER(),
        Concat(OLD.number, ', ', OLD.name, ', ', OLD.status, ', ', OLD.smoke),
        'guest on kustutanud')

UPDATE

INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
VALUES (NOW(), USER(),
        Concat('vanad andmed: ', OLD.number, ', ', OLD.name, ', ', OLD.status, ', ', OLD.smoke,
              ' \n UUED ANDMED: ', NEW.number, ', ', NEW.name, ', ', NEW.status, ', ', NEW.smoke),
        'guest on uuendatud')

SQL SERVER

room triger

INSERT

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(311,'Tiny','reserved', 1)
SELECT * FROM room
SELECT * FROM logi

DELETE

CREATE TRIGGER roomKustutamine
ON room
FOR DELETE
AS
INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
SELECT GETDATE(), USER, CONCAT(deleted.number, ', ', deleted.name, ', ', deleted.status, ', ', deleted.smoke), 'guest on kustatud '
FROM deleted
--kontroll
DELETE FROM room WHERE id=1
SELECT * FROM room
SELECT * FROM logi

UPDATE

CREATE TRIGGER roomUuendamine
ON room
FOR UPDATE
AS
INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
SELECT GETDATE(), USER, CONCAT('VANAD - ', deleted.number, ', ', deleted.name, ', ', deleted.status, ', ', deleted.smoke,
' UUED - ', inserted.number, ', ', inserted.name, ', ',
deleted.status, ', ',deleted.smoke), 'room on uuendatud '
FROM deleted INNER JOIN inserted
ON deleted.id=inserted.id
--kontroll
SELECT * FROM room
UPDATE room SET number = 320
WHERE id=2;
SELECT * FROM room
SELECT * FROM logi