Код который был составленый весь дома/на уроке
Create database trigerautoregistr;
USE trigerautoregistr;
CREATE TABLE autoregister (
id int identity(1,1) PRIMARY KEY,
muudel VARCHAR(50),
aasta INT,
kasutaja VARCHAR(50),
markID INT,
FOREIGN KEY (markID) REFERENCES mark(markID)
);
Create table logitable(
id int PRIMARY KEY IDENTITY (1,1),
aeg DATETIME,
toiming varchar(100),
andmed TEXT,
kasutaja varchar(50)
);
CREATE TABLE mark (
markID int identity(1,1) PRIMARY KEY,
markNimi VARCHAR(100) UNIQUE
);
DROP TABLE logitable;
DROP TRIGGER autoUuendamine;
INSERT INTO autoregister (muudel, aasta, kasutaja, markID)
VALUES ('kia', 2022, 'Katja', 1);
INSERT INTO autoregister (muudel, aasta, kasutaja, markID)
VALUES ('toyota', 2022, 'Erik', 2);
INSERT INTO autoregister (muudel, aasta, kasutaja, markID)
VALUES ('BMV', 2019, 'Erki', 3);
INSERT INTO mark(markNimi) VALUES ('sportage');
INSERT INTO mark(markNimi) VALUES ('auris');
INSERT INTO mark(markNimi) VALUES('x5');
-- Trigerlisatamine auto
CREATE TRIGGER autoLisamine
ON autoregister
FOR INSERT
AS
INSERT INTO logitable (aeg, toiming, andmed, kasutaja)
SELECT
GETDATE(),
'uus auto on lisatud',
CONCAT(inserted.muudel, ', ', m.markNimi, ', kasutaja: ', inserted.kasutaja),
SUSER_NAME()
FROM inserted
INNER JOIN mark m ON m.markID = inserted.markID;
-- Vaatame kontrollime
INSERT INTO autoregister (muudel, aasta, kasutaja, markID)
VALUES ('audi', 2023, 'Itan', 3);
SELECT * from logitable;
SELECT * from autoregister;
-- triger kustutamine
CREATE TRIGGER autoKustutamine
ON autoregister
FOR DELETE
AS
INSERT INTO logitable(aeg, toiming, andmed, kasutaja)
SELECT
GETDATE(),
'on tehtud Delete',
CONCAT(m.markNimi, ', ', d.muudel, ', ', d.kasutaja),
SUSER_NAME()
FROM deleted d
INNER JOIN mark m ON m.markID = d.markID;
-- Vaatame kontrollime
DELETE FROM autoregister
WHERE markID = 1;
SELECT * FROM autoregister;
SELECT * FROM logitable;
-- Uuendamine autorister
CREATE TRIGGER autoUuendamine
ON autoregister
FOR UPDATE
AS
INSERT INTO logitable (aeg, toiming, andmed, kasutaja)
SELECT GETDATE(),
'on tehtud Update',
CONCAT('Vanad andmed - ', d.muudel, ', ', m1.markNimi,
' | Uued andmed - ', i.muudel, ', ', m2.markNimi),
SUSER_NAME()
FROM deleted d
INNER JOIN inserted i ON d.id = i.id
INNER JOIN mark m1 ON m1.markID = d.markID
INNER JOIN mark m2 ON m2.markID = i.markID;
-- Vaatame kontrollime
UPDATE autoregister SET markID = 2 WHERE id = 1;
SELECT * FROM autoregister;
SELECT * FROM logitable;
Так же в несла в него сейчас это не сколько функций, чтобы еще раз проверить работу тригеров DROP TRIGGER *nimi*; разбирем тригеры по очареди.
AutoLisamine
С помощью этого тригера мы отслеживаем добавляения в таблице logitable
-- Trigerlisatamine auto
CREATE TRIGGER autoLisamine
ON autoregister
FOR INSERT
AS
INSERT INTO logitable (aeg, toiming, andmed, kasutaja)
SELECT
GETDATE(),
'uus auto on lisatud',
CONCAT(inserted.muudel, ', ', m.markNimi, ', kasutaja: ', inserted.kasutaja),
SUSER_NAME()
FROM inserted
INNER JOIN mark m ON m.markID = inserted.markID;

AutoKustutamine
С помощью этого тригера мы отслеживаем удаления из таблицы autoregister в таблице logitable (удаляем по markID)
-- triger kustutamine
CREATE TRIGGER autoKustutamine
ON autoregister
FOR DELETE
AS
INSERT INTO logitable(aeg, toiming, andmed, kasutaja)
SELECT
GETDATE(),
'on tehtud Delete',
CONCAT(m.markNimi, ', ', d.muudel, ', ', d.kasutaja),
SUSER_NAME()
FROM deleted d
INNER JOIN mark m ON m.markID = d.markID;

AutoUuendamine
С помощью этого тригера мы отслеживаем изменения из таблицы autoregister в таблице logitable
CREATE TRIGGER autoUuendamine
ON autoregister
FOR UPDATE
AS
INSERT INTO logitable (aeg, toiming, andmed, kasutaja)
SELECT GETDATE(),
'on tehtud Update',
CONCAT('Vanad andmed - ', d.muudel, ', ', m1.markNimi,
' | Uued andmed - ', i.muudel, ', ', m2.markNimi),
SUSER_NAME()
FROM deleted d
INNER JOIN inserted i ON d.id = i.id
INNER JOIN mark m1 ON m1.markID = d.markID
INNER JOIN mark m2 ON m2.markID = i.markID;


