SQL Server
Loome andmebaasi ja kaks tabelit
- SQL Triggeri Uuendamine (Muutmine)
- Leiame vajaliku tabeli andmebaasis
- Avame Triggers kausta
- Paremklõpsame soovitud triggeril
- Valime Modify (Muuda).
Create database trigerTARgv24;
USE trigerTARgv24;
Create table linnad(
linnID int PRIMARY KEY IDENTITY (1,1),
linnanimi varchar(15) NOT NULL,
rahvaarv int);
Create table logi(
id int PRIMARY KEY IDENTITY (1,1),
aeg DATETIME,
toiming varchar(100),
andmed TEXT
)
Trigger lisatud kirjeid jälgimiseks tabelis “linnad” – INSERT
CREATE
TRIGGER
linnaLisamine
ON
linnad
--tabelinimi, mis on vaja jälgida
FOR
INSERT
AS
INSERT
INTO
logi(aeg, toiming, andmed)
SELECT
GETDATE(),
--aeg
'on tehtud INSERT käsk'
,
--toiming
inserted.linnanimi
--andmed
FROM
inserted;
Trigeri tegevuse kontroll
INSERT INTO linnad(linnanimi, rahvaarv)
VALUES (‘Tallinn’, 600000);
SELECT * FROM linnad;
SELECT * FROM logi;


See avab dialoogiboksi, kus me saame teha vajalikud muudatused ja salvestada need.

Tõsta esile ALTER TRIGGER –> Execute –> Käsk täidetud

Andmete sisestamine tabelisse “logi” on muutunud.

Tools –> Options –> Designers –> Table and Database Designers –> Eemaldada linnuke valikust “Prevent saving changes that require table re-creation”

Lisame välja “kasutaja” tabelisse ja salvestame.

Muudame triggeri.
SUSER_NAME on SQL funktsioon, mis tagastab hetkel sisse logitud kasutaja nime.
ALTER TRIGGER [dbo].[linnaLisamine]
ON [dbo].[linnad] –tabelinimi, mis on vaja jälgida
FOR INSERT
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
SUSER_NAME(), –USER
GETDATE(), –aeg
‘on tehtud INSERT käsk’, –toiming
CONCAT(‘linn: ‘, inserted.linnanimi, ‘, elanike arv: ‘, inserted.rahvaarv) –andmed
FROM inserted;
Kontrollime: Lisab kasutaja, kes andmed tabelisse sisestas.

Trigger eemaldatud kirjeid jälgimiseks tabelis “linnad” – DELETE
CREATE TRIGGER linnaKustutamine
ON linnad –tabelinimi, mis on vaja jälgida
FOR DELETE
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
SUSER_NAME(), –USER
GETDATE(), –aeg
‘on tehtud DELETE käsk’, –toiming
CONCAT(‘linn: ‘, deleted.linnanimi, ‘, elanike arv: ‘, deleted.rahvaarv) –andmed
FROM deleted;
