XAMPP—————————————————————————
Uue DB ja tabelite loomine
-- Create the database
CREATE DATABASE trigerTARgv24;
-- Use the created database
USE trigerTARgv24;
-- Create the 'linnad' table
CREATE TABLE linnad (
linnID INT PRIMARY KEY AUTO_INCREMENT,
linnanimi VARCHAR(15) NOT NULL,
rahvaarv INT
);
CREATE TABLE `logi` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`aeg` DATETIME DEFAULT NULL,
`toiming` VARCHAR(100) DEFAULT NULL,
`andmed` TEXT DEFAULT NULL,
`kasutaja` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Ulesanne
Looge logitabel(id, toiming, aeg, autoAndmed), et salvestada muudatused autoregistris.
Mõelge ise automaatse registreerimise tabeli väljadele ja andmetele.
Looge päästikud andmete lisamise, kustutamise ja muutmise salvestamiseks automaatregistri tabelis, samal ajal kui muudatuste andmed salvestatakse logitabeli tabelisse.

Triggerite loomine
Andmete lisamine

Andmete kustutamine

Andmete uuendamine

Valmis triggerid:

Triggerite kasutamine
Andmete lisamine



Andmete kustutamine



Andmete uuendamine


SQL—————————————————————————
Ulesanne
1. Добавить к таблице autoregistr любую связанную таблицу.
2. Изменить триггеры на отслеживание обновлений и добавлений так, чтобы в таблице logitabel отображались данные из связанных таблиц.
Nuud teeme see ulesanne SQL-ga.
Loome uue samasugune DB ja tebelid, aga nuud lisame ka uus tabel ja uhendame seda esimesega:
CREATE DATABASE AutoregisterDB;
USE AutoregisterDB;
CREATE TABLE automudelid (
mudelID INT identity(1,1) PRIMARY KEY,
mark VARCHAR(50),
mudel VARCHAR(50)
);
CREATE TABLE autoregister (
regID INT identity(1,1) PRIMARY KEY,
numbrimärk VARCHAR(20) UNIQUE,
omanik VARCHAR(100),
registreerimise_kuupäev DATETIME,
mudelID INT,
CONSTRAINT FK_AutoMudel FOREIGN KEY (mudelID) REFERENCES automudelid(mudelID)
);
CREATE TABLE logi (
id INT identity(1,1) PRIMARY KEY,
aeg DATETIME,
toiming VARCHAR(100),
andmed TEXT,
kasutaja VARCHAR(50)
);

Loome triggerid:
CREATE TRIGGER logi_lisamine
ON autoregister
AFTER INSERT
AS
INSERT INTO logi(aeg, toiming, andmed, kasutaja)
SELECT
GETDATE(),
'on tehtud Lisamine',
CONCAT('Numbrimärk: ', inserted.numbrimärk,
', Omanik: ', inserted.omanik,
', Mark: ', am.mark,
', Mudel: ', am.mudel),
SUSER_NAME()
FROM inserted
INNER JOIN automudelid am ON inserted.mudelID = am.mudelID;
CREATE TRIGGER logi_kustutamine
ON autoregister
AFTER DELETE
AS
INSERT INTO logi(aeg, toiming, andmed, kasutaja)
SELECT
GETDATE(),
'on tehtud Kustutamine',
CONCAT('Numbrimärk: ', deleted.numbrimärk,
', Omanik: ', deleted.omanik,
', Mark: ', am.mark,
', Mudel: ', am.mudel),
SUSER_NAME()
FROM deleted
INNER JOIN automudelid am ON deleted.mudelID = am.mudelID;
CREATE TRIGGER logi_uuendamine
ON autoregister
AFTER UPDATE
AS
INSERT INTO logi(aeg, toiming, andmed, kasutaja)
SELECT
GETDATE(),
'on tehtud Uuendamine',
CONCAT('Vanad andmed - Numbrimärk: ', deleted.numbrimärk,
', Omanik: ', deleted.omanik,
', Mark: ', am1.mark,
', Mudel: ', am1.mudel,
' | Uued andmed - Numbrimärk: ', inserted.numbrimärk,
', Omanik: ', inserted.omanik,
', Mark: ', am2.mark,
', Mudel: ', am2.mudel),
SUSER_NAME()
FROM deleted
INNER JOIN inserted ON deleted.regID = inserted.regID
INNER JOIN automudelid am1 ON am1.mudelID = deleted.mudelID
INNER JOIN automudelid am2 ON am2.mudelID = inserted.mudelID;
Nuud lisame andmed tabelidesse:
INSERT INTO automudelid (mark, mudel) VALUES ('Toyota', 'Corolla');
INSERT INTO automudelid (mark, mudel) VALUES ('Ford', 'Focus');
INSERT INTO automudelid (mark, mudel) VALUES ('BMW', 'X5');
SELECT * FROM automudelid;

INSERT INTO autoregister (numbrimärk, omanik,registreerimise_kuupäev, mudelID)
VALUES ('123ABC', 'Jaan Tamm', GETDATE(), 1);
SELECT * FROM autoregister;

Uuendame tabeli:
UPDATE autoregister
SET omanik = 'Mari Maasikas', mudelID = 2
WHERE numbrimärk = '123ABC';

Kustutame tabelist:
DELETE FROM autoregister WHERE numbrimärk = ‘123ABC’;

Kontrollime triggeri:
SELECT * FROM logi;
