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;

CREATE TABLE maakond(
maakondID int Primary KEY identity(1,1),
maakond varchar(100) UNIQUE);
INSERT INTO maakond(maakond)
VALUES ('Harjumaa');
INSERT INTO maakond(maakond)
VALUES ('Pärnumaa');
SELECT * FROM maakond;
select * from linnad;
ALTER TABLE linnad ADD maakondID int;
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID);
INSERT INTO linnad(linnanimi, rahvaarv, maakondID)
VALUES ('Pärnu', 65000, 2), ('Keila', 45515, 1),
('Tallinn', 165000, 1);
SELECT * FROM maakond;
SELECT * FROM linnad;
SELECT l.linnanimi, l.rahvaarv, m.maakond
FROM linnad l
INNER JOIN maakond m
ON l.maakondID = m.maakondID

SELECT l.linnanimi, l.rahvaarv, m.maakond
FROM linnad l
INNER JOIN maakond m
ON l.maakondID = m.maakondID

CREATE TRIGGER linnaLisamine2
ON linnad
AFTER INSERT
AS
BEGIN
INSERT INTO logi(aeg, toiming, andmed, kasutaja)
SELECT GETDATE(),
'Linn on lisatud, maakond on valitud',
CONCAT(inserted.linnanimi, ', ', m.maakond, ', ', inserted.rahvaarv),
USER
FROM inserted
INNER JOIN maakond m
ON inserted.maakondID = m.maakondID;
END
INSERT INTO linnad(linnanimi, rahvaarv, maakondID)
VALUES ('Tartu', 4548485, 2),
VALUES ('Elva', 5000, 1);
SELECT * FROM maakond;
SELECT * FROM linnad;
SELECT * FROM logi;

CREATE TRIGGER linnaUuendamine2
ON linnad
FOR UPDATE
AS
BEGIN
INSERT INTO logi(aeg, toiming, andmed, kasutaja)
SELECT GETDATE(),
'Linn on lisatud, maakond on valitud',
CONCAT('Vanad andmed: ', deleted.linnanimi, ', ', m2.maakond,
'\n Uued andmed: ', inserted.linnanimi, ', ', m1.maakond),
USER
FROM deleted
INNER JOIN inserted ON deleted.linnID=inserted.linnID
INNER JOIN maakond m1 ON inserted.maakondID = m1.maakondID
INNER JOIN maakond m2 ON deleted.maakondID = m2.maakondID;
END
--KONTROLL
UPDATE linnad SET maakondID=1, linnanimi='Tallinn'
WHERE linnID = 1;
SELECT * FROM logi;
