Andmebaasi ja tabelite loomine
CREATE TABLE autoregister(
autoID int Auto_increment PRIMARY KEY,
mark varchar(15) NOT NULL,
mudel varchar(15) NOT NULL,
aasta INT,
omanik VARCHAR(50),
registreerimiseKuupaev DATE
);
CREATE TABLE logitabel(
id int Auto_increment PRIMARY KEY,
toiming varchar(100),
aeg DATETIME,
autoAndmed TEXT
);
Auto lisamine
INSERT INTO logitabel(toiming, aeg, autoAndmed)
SELECT
'On tehtud INSERT käsk',
NOW(),
CONCAT('Mark: ', NEW.mark, ', Mudel: ', NEW.mudel, ', Omanik: ', NEW.omanik);

KONTROLL trigger logitabel

Auto Kustutamine
INSERT INTO logitabel(toiming, aeg, autoAndmed)
SELECT
'On tehtud DELETE käsk',
NOW(),
CONCAT('Mark: ', OLD.mark, ', Mudel: ', OLD.mudel, ', Omanik: ', OLD.omanik);

KONTROLL TRIGER kustutamine

Auto Uuendamine
INSERT INTO logitabel(toiming, aeg, autoAndmed)
SELECT
'On tehtud UPDATE käsk',
NOW(),
CONCAT('Vanad andmed - Mark: ', OLD.mark, ', Mudel: ', OLD.mudel, ', Omanik: ', OLD.omanik,
'\nUued andmed - Mark: ', NEW.mark, ', Mudel: ', NEW.mudel, ', Omanik: ', NEW.omanik)
FROM autoregister a
INNER JOIN autoregister ar
ON a.autoID=ar.autoID
WHERE NEW.autoID=a.autoID;

KONTROLL TRIGGER uuendamine

Autokindlustus lisamine
CREATE TABLE kindlustus (
kindlustusID INT AUTO_INCREMENT PRIMARY KEY,
autoID INT,
kindlustusFirma VARCHAR(100),
poliisiNumber VARCHAR(100),
kehtivKuni DATE,
FOREIGN KEY (autoID) REFERENCES autoregister(autoID)
ON DELETE CASCADE
ON UPDATE CASCADE
);
autoID — внешний ключ, ссылается на autoregister.
ON DELETE CASCADE — если удалить авто, удалится и его страховка
ON UPDATE CASCADE — если autoID изменится, обновится и тут
Kindlustus andmed lisamine
INSERT INTO kindlustus (autoID, kindlustusFirma, poliisiNumber, kehtivKuni)
VALUES (1, 'If Kindlustus', 'POL12345678', '2025-12-31');

Kontroll seosed
SELECT a.mark, a.mudel, k.kindlustusFirma, k.kehtivKuni
FROM autoregister a
JOIN kindlustus k ON a.autoID = k.autoID;

UUENDAMINE trigger koos kasutaja ja kindlustuse seostega
CREATE TRIGGER autoUuendamine
AFTER UPDATE ON autoregister
FOR EACH ROW
INSERT INTO logitabel (toiming, aeg, autoAndmed)
SELECT
CONCAT('UPDATE tegi kasutaja: ', USER()),
NOW(),
CONCAT('Mark: ', NEW.mark,
', Mudel: ', NEW.mudel,
', Omanik: ', IFNULL(NEW.omanik, 'puudub'),
', Kindlustus: ', IFNULL(k.kindlustusFirma, 'puudub'),
', Poliisi nr: ', IFNULL(k.poliisiNumber, 'puudub'),
', Kehtib kuni: ', IFNULL(k.kehtivKuni, 'puudub'))
FROM kindlustus k
WHERE k.autoID = NEW.autoID;
KONTROLL
UPDATE autoregister
SET omanik = 'Uus Omanik'
WHERE autoID = 200;
SELECT * FROM logitabel
