Loo uus AB ja kasutan seda
create database RaamatuKoguSergachev;
use RaamatuKoguSergachev
Loo tabeli «raamat», «author», «logi». Authori ja raamatu tabelite ühendamine
CREATE TABLE raamat (
raamatID INT PRIMARY KEY IDENTITY(1,1),
raamatuNimi VARCHAR(50),
authorID INT NOT NULL,
hind INT NOT NULL,
FOREIGN KEY (authorID) REFERENCES author(authorId)
);
create table logi(
logiID int primary key identity(1,1),
kuupaev datetime,
sisestatudAndmed text,
kasutaja varchar(50));
CREATE TABLE author (
authorId INT PRIMARY KEY IDENTITY(1,1),
authorNimi VARCHAR(40) UNIQUE,
authorPerenimi VARCHAR(50)
);
Lisame andmeid tabelis «Author»
insert author( authorNimi, authorPerenimi)
values('Aleksander', 'Pushkin')
Teen päästikud «DELETE», «INSERT», «UPDATE»
Päästik «INSERT»
create trigger raamatuLisamine
on raamat
for insert
as
insert into logi (kasutaja, kuupaev, sisestatudAndmed)
select user, getdate(),
concat( 'Raamat on lisatud ', r.raamatuNimi, ', ', a.authorNIMI, ', ', r.hind)
from raamat r
inner join author a
on a.authorID =r.raamatID;
drop trigger raamatuLisamine
insert into raamat(raamatuNimi, authorID, hind)
values ('Paul hakkab inseneriks', 1, 23)
select * from raamat
select * from logi

Päästik «DELETE»
create trigger raamatuKustutamine
on raamat
for delete
as
insert into logi (kasutaja, kuupaev, sisestatudAndmed)
select user, getdate(),
concat('Raamatu on kustutatud ', deleted.raamatuNimi, ', ', a.authorNimi)
from deleted
inner join author a
on deleted.authorID =a.authorID;
--kontroll
delete from raamat
where raamatID = 7;
select * from raamat
select * from logi

Päästik «UPDATE»
create trigger raamatuUuendamine
on raamat
for update
as
insert into logi (kasutaja, kuupaev, sisestatudAndmed)
select user, getdate(),
concat(
'Raamatu on uuendatud. ', 'Vanad andmed - ', deleted.raamatuNimi, ', ', a1.authorNimi, '. ',
'Uuendatud andmed - ', inserted.raamatuNimi, ', ', a2.authorNimi
)
from deleted
inner join inserted on deleted.raamatID=inserted.raamatID
inner join author a1 on deleted.authorID =a1.authorID
inner join author a2 on inserted.authorID =a2.authorID;
-- Kontrollime
update raamat set raamatuNimi = 'Tallinn-Väike', authorID = 1
where raamatID=6;
select * from raamat
select * from logi

Seejärel teen kasutaja: Opilane

Teeme kasutajapiirangud
grant select, insert, delete, update on raamat to Opilane
kontrolime

