Create table linnad(
linnID int PRIMARY KEY identity(1,1),
linnanimi varchar(15),
rahvaarv int);
-- logi tabel täidav vastav trigger
Create table logi(
id int PRIMARY KEY identity(1,1),
aeg DATETIME,
toiming varchar(100),
sisestatud_andmed TEXT
)
New query
Concat()- объединение данных из нескольких полей
CREATE TRIGGER linnLisamine
ON linnad
AFTER INSERT
AS
BEGIN
INSERT INTO logi(aeg, toiming, sisestatud_andmed)
SELECT GETDATE(), 'Uus linn on lisatud',
CONCAT(linnanimi, ' rahvaarv - ', rahvaarv)
FROM inserted;
END
--kontroll
INSERT INTO linnad(linnanimi, rahvaarv)
Values ('Narva', 436863);
SELECT * FROM linnad;
SELECT * FROM logi;

CREATE TRIGGER linnKustutamine
ON linnad
AFTER INSERT
AS
BEGIN
INSERT INTO logi(aeg, toiming, sisestatud_andmed)
SELECT GETDATE(), 'Linn on kustutatud',
deleted.linnanimi
FROM deleted;
END
--kontroll
DELETE FROM linnad Where linnID = 2;
SELECT * FROM linnad;
SELECT * FROM logi;

ALTER TABLE logi ADD kasutaja varchar(100);
SELECT * FROM logi;

USE [trigger_suhhanova]
GO
/****** Object: Trigger [dbo].[linnLisamine] Script Date: 13.03.2024 10:56:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[linnLisamine]
ON [dbo].[linnad]
AFTER INSERT
AS
BEGIN
INSERT INTO logi(aeg, kasutaja, toiming, sisestatud_andmed)
SELECT GETDATE(),
USER,
'Uus linn on lisatud',
CONCAT(linnanimi, ' rahvaarv - ', rahvaarv)
FROM inserted;
END


CREATE TRIGGER linnUuendamine
ON linnad
FOR UPDATE
AS
BEGIN
INSERT INTO logi(aeg, kasutaja, toiming, sisestatud_andmed)
SELECT GETDATE(),
USER,
'Linna andmed on uuednatud',
CONCAT('Vanad andmed: ', d.linnanimi, ', ' , d.rahvaarv,
'Uued andmed: ', i.linnanimi, ', ', i.rahvaarv)
FROM deleted d
INNER JOIN inserted i
ON i.linnID = d.linnID;
END
--kontroll
UPDATE linnad SET linnanimi = 'Kivioli', rahvaarv = 100
WHERE linnID = 3;
SELECT * FROM linnad;
SELECT * FROM logi;
