SQL Server.
- Loome andmebaasi ja kolm tabelit. 1. Tabel – kuhu kasutaja sisestab andmeid (Linnad, maakonnad). 2. tabel – logi, kus trigger lisab jälgitud andmeid
create table Linnad
(
linnID int primary key identity(1,1),
linnaNimi varchar(50) unique,
rahvaarv int not null
);
--tabel Logi
create table Logi
(
logID int primary key identity(1,1),
kuupaev datetime,
andmed text,
kasutaja varchar(40)
);
create table maakonnad(
maakondId int primary key identity(1,1),
maakondNimi varchar(25) UNIQUe
);
alter table linnad add maakondId int;
select * from Linnad;
alter table linnad add constraint fk_maakond
foreign key (maakondId) references maakonnad(maakondId);create table Linnad
(
linnID int primary key identity(1,1),
linnaNimi varchar(50) unique,
rahvaarv int not null
);
--tabel Logi
create table Logi
(
logID int primary key identity(1,1),
kuupaev datetime,
andmed text,
kasutaja varchar(40)
);
create table maakonnad(
maakondId int primary key identity(1,1),
maakondNimi varchar(25) UNIQUe
);
alter table linnad add maakondId int;
select * from Linnad;
alter table linnad add constraint fk_maakond
foreign key (maakondId) references maakonnad(maakondId);
2. trigeri loomine.
INSERT TRIGGER, mis jälgib andmete lisamine tabelisse linnad.
--Triger mis jälgib kaks seostatud tabelit
create trigger linnaLisamine
ON Linnad
FOR insert
as
insert into Logi(kuupaev, andmed, kasutaja)
select
getdate(),
CONCAT
(
' | Lisatud linn: ', inserted.linnaNimi,
' | rahvaarv: ', inserted.rahvaarv,
' | maakond: ', m.maakondNimi
),
SYSTEM_USER
from inserted inner join maakonnad m
on inserted.maakondId=m.maakondId;
DELETE triger, mis jälgib andmete kustutamine tabelist linnad.
create trigger linnaKustutamine
on Linnad
for delete
as
insert into Logi(kuupaev, andmed, kasutaja)
select
getdate(),
CONCAT
(
' | Kustutatud linn: ', deleted.linnaNimi,
' | rahvaarv: ', deleted.rahvaarv,
' | maakond: ', m.maakondNimi
),
SYSTEM_USER
from deleted inner join maakonnad m
on deleted.maakondId = m.maakondId;
UPDATE Trigger, mis jälgib andmete uuendamine tabelis linnad.
create trigger linnaUuendamine
on Linnad
for update
as
insert into Logi(kuupaev, andmed, kasutaja)
select
getdate(),
CONCAT
(
' | Vana linna andmed: ', d.linnaNimi,
' | rahvaarv: ', d.rahvaarv,
' | maakond: ', m1.maakondNimi,
' | Uued linna andmed: ', i.linnaNimi,
' | rahvaarv: ', i.rahvaarv,
' | maakond: ', m2.maakondNimi
),
SYSTEM_USER
from deleted d
inner join inserted i on d.linnID = i.linnID
inner join maakonnad m1 on d.maakondId = m1.maakondId
inner join maakonnad m2 on i.maakondId = m2.maakondId;