Ülesanne:
Kirjuta eesti keeles korrektselt
- Tabelinimi, väljad (vähemalt 5)
- tabeli logi sisu
- mida peaksid trigerid tegema (vähemalt 2 trigeri)
- millised protseduurid on vaja teha (vähemalt kolm)
1. Raamatukogud. ID, Autor, Raamat, Väljaandja (Издательство), Väljaande aasta (Год выпуска)
2. Id, kuupaev, kasutaja, andmed, tegevus
3. UPDATE, INSERT
4. Процедуры на добавление, удаление, просмотр таблицы
SQL
- Tabelinimi, väljad (vähemalt 5)
Create table Raamatukogud(
ID int PRIMARY KEY identity(1,1),
Autor varchar(20),
Raamat varchar(20),
Väljaandja varchar(20),
Väljaande_aasta datetime
);

- tabeli logi sisu
Create table logi(
id int primary key identity(1,1),
kasutaja varchar(20),
andmed text,
tegevus varchar(100)
);

- mida peaksid trigerid tegema (vähemalt 2 trigeri)
Lisamine
Triger mis jälgib tabelisse lisamine
CREATE TRIGGER lisamine
ON Raamatukogud
FOR INSERT
AS
insert into logi(kasutaja, andmed, tegevus)
SELECT
USER,
Concat(
inserted.autor, ', ',
inserted.Raamat, ', ',
inserted.Väljaandja, ', ',
inserted.Väljaande_aasta, ', '
), 'Raamat on lisaud'
FROM inserted
--kontroll
insert into Raamatukogud(Autor, Raamat, Väljaandja, Väljaande_aasta)
values('Apollon', 'Guess', 'Times','2001-09-11')
SELECT * from Raamatukogud;
SELECT * from logi

Uuendamine
Triger mis jälgib andmete uuendamine tabelis
CREATE TRIGGER uuendamine
ON Raamatukogud
FOR update
AS
insert into logi(kasutaja, andmed, tegevus)
SELECT
USER,
Concat(
'Vanad andmed: ',
deleted.autor, ', ',
deleted.Raamat, ', ',
deleted.Väljaandja, ', ',
deleted.Väljaande_aasta, ', ', '\n Uued andmed: ',
inserted.autor, ', ',
inserted.Raamat, ', ',
inserted.Väljaandja, ', ',
inserted.Väljaande_aasta, ', '
), 'Raamat on uuendatud'
FROM deleted inner join inserted
on deleted.id=inserted.id
--kontroll
update Raamatukogud
set autor='Rayan Gosling'
where id=1
SELECT * from Raamatukogud;
SELECT * from logi;

- millised protseduurid on vaja teha (vähemalt kolm)
lisamine
Create procedure RaamatuLisamine
@Autor varchar(20),
@Raamat varchar(20),
@Väljaandja varchar(20),
@Väljaande_aasta datetime
as
begin
Insert into Raamatukogud(Autor, Raamat, Väljaandja, Väljaande_aasta)
values(@Autor,@Raamat,@Väljaandja, @Väljaande_aasta);
Select * from Raamatukogud;
select * from logi
end;
exec RaamatuLisamine 'Night Lite', 'Insiders 2014', 'Records', 2014;

Kustutamine
Create procedure RammatuDel
@id int
as
begin
Select * from Raamatukogud;
delete Raamatukogud
where @id=ID;
Select * from Raamatukogud;
select * from logi;
end;
--kontroll
exec RammatuDel 3;

Vaatamine
Create procedure vaatamineRaamatud
as
begin
Select * from Raamatukogud;
end;
--kontroll
exec vaatamineRaamatud;

Teine Ülesanne
Lisa veel üks tabel – Autor(autorID, nimi, raamatID)
Tabelid on omavahel seotud – Raamatukogud.raamatID=Autor.raamatID
2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.
3. Kontrolli trigeri tegevust
Lisa veel üks tabel – Autor(autorID, nimi, raamatID)
Create table Autor(
autorID int primary key identity(1,1),
nimi varchar (20),
raamatID int,
foreign key (raamatID) references Raamatukogud(ID)
);
2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.
Lisamine
Triger mis jälgib tabelisse lisamine
CREATE TRIGGER AutorLisamine
ON Autor
FOR insert
AS
insert into logi(kasutaja, andmed, tegevus)
SELECT
USER,
Concat(
inserted.nimi, ', ',
rk.Raamat), 'Raamat on lisaud'
FROM inserted
inner join Raamatukogud rk on inserted.raamatID=rk.ID;
--kontroll
insert into Autor(nimi, raamatID)
values('Rayan Gosling', 2)
SELECT * from Raamatukogud;
SELECT * from Autor;
SELECT * from logi
3. Kontrolli trigeri tegevust

2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.
Uuendamine
Triger mis jälgib andmete uuendamine tabelis
CREATE TRIGGER AutorUuendamine
ON Autor
FOR update
AS
insert into logi(kasutaja, andmed, tegevus)
SELECT
USER,
Concat(
'Vanad andmed: ',
deleted.nimi, ', ',
rk1.Raamat, '\n Uued andmed: ',
inserted.nimi, ', ',
rk2.Raamat
), 'Raamat on uuendatud'
FROM deleted inner join inserted
on deleted.autorID=inserted.autorID
inner join Raamatukogud rk1 on inserted.raamatID=rk1.ID
inner join Raamatukogud rk2 on deleted.raamatID=rk2.ID;
--kontroll
update Autor
set nimi='Gay Richi'
where autorID=1
SELECT * from Raamatukogud;
SELECT * from Autor;
SELECT * from logi;
3. Kontrolli trigeri tegevust

XAMPP
Tabelinimi, väljad (vähemalt 5)
Create table Raamatukogud(
ID int PRIMARY KEY AUTO_INCREMENT,
Autor varchar(20),
Raamat varchar(20),
Väljaandja varchar(20),
Väljaande_aasta datetime
);

tabeli logi sisu
Create table logi(
id int primary key AUTO_INCREMENT,
kasutaja varchar(20),
andmed text,
tegevus varchar(100)
);

- mida peaksid trigerid tegema (vähemalt 2 trigeri)
Lisamine
Triger mis jälgib tabelisse lisamine

Uuendamine
Triger mis jälgib andmete uuendamine tabelis

mõlema päästiku kontrollimine

- millised protseduurid on vaja teha (vähemalt kolm)
lisamine



Kustutamine



Vaatamine


Teine Ülesanne
Lisa veel üks tabel – Autor(autorID, nimi, raamatID)
Tabelid on omavahel seotud – Raamatukogud.raamatID=Autor.raamatID
2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.
3. Kontrolli trigeri tegevust
Lisa veel üks tabel – Autor(autorID, nimi, raamatID)
Create table Autor(
autorID int primary key AUTO_INCREMENT,
nimi varchar (20),
raamatID int,
foreign key (raamatID) references Raamatukogud(ID)
);
2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.
Lisamine

3. Kontrolli trigeri tegevust

2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.
Uuendamine

3. Kontrolli trigeri tegevust

Kasutaja ei saa SELECT logi
