Poe klassitöö

SQL

Loonud andmebaasi

create database poe
use poe;

Loonud tabel “klient”

create table klient(
klientId int primary key identity(1,1), 
klientiNimi varchar(50), 
klientiVanus int, 
klientiSugu char(10));

Loodud tabel “Logid”

create table Logid(
logiID int primary key identity(1,1), 
kuupaev datetime, 
andmed text, 
kasutaja varchar (100));

Loonud uue kasutaja

grant insert,update,select on klient to Tootja;

Kasutajaõiguste kontroll

Loodud triger “KliendiLisamine” – lisa uus klient

create trigger KliendiLisamine
on klient 
for insert
as
insert into Logid(kasutaja, kuupaev, andmed)
select 
user,
getdate(),
CONCAT('Lisatud andmed: ', inserted.klientiNimi, ', ',inserted.klientiVanus, ', ', inserted.klientiSugu)
from inserted

Kontroll

insert into klient(klientiNimi,klientiVanus,klientiSugu)
values ('Sergei Sergeev', 20, 'Mees');
select * from klient

Loodud triger “KliendiUuendamine” – uuenda klient

create trigger KliendiUuendamine
on klient 
for update
as
insert into Logid(kasutaja, kuupaev,andmed)
select 
user,
getdate(),
CONCAT('Vana andmed: ', deleted.klientiNimi, ', ',deleted.klientiVanus, ', ', deleted.klientiSugu, '. Uued admed: ', inserted.klientiNimi, ', ', inserted.klientiVanus, ', ', inserted.klientiSugu)
from deleted inner join inserted
on deleted.klientId=inserted.klientId

Kontroll

update klient set klientiSugu='Mees'
where klientId=1;

Kontrolli kõik teostatud operatsioonid üle

XAMPP

Loodud tabelid

Loodud uus kasutaja

Loodud trigger lisamine

Loodud trigger uendamine

Kontroll logid tabel

Seotud Tabelid

SQL

loonud tabeli autoRemont

CREATE TABLE autoRemont(
autoID int PRIMARY KEY identity(1,1),
automark varchar(100),
remont text,
klientID int
);
SELECT * FROM autoRemont

Loonud seose

alter table autoremont add foreign key (klientID) references klient(klientId);

triger uue autoremondi lisamiseks

create trigger autoremontLisamine
on autoRemont
for insert
as
insert into logid(kuupaev,andmed,kasutaja)
select 
GETDATE(),
CONCAT(
'Autoremont on lisatud: ',a.automark,', ',a.remont, ', ', k.klientiNimi),
USER
from autoRemont a
inner join klient k
on k.klientId=a.klientID;
 

insert into autoRemont(automark,remont,klientID)
values ('BMW','Rataste vahetus',1);
 
 select * from klient;
 select * from Logid;

triger autoremondi uuendamiseks

create trigger autoremontUuendamine
on autoRemont
for update
as
insert into logid(kuupaev,kasutaja,andmed)
select 
GETDATE(),
USER,
CONCAT(
'vanad andmed - ', deleted.automark, ', ',deleted.remont, ', ',k1.klientiNimi,
' | uuendatud andmed - ', inserted.automark, ', ',inserted.remont, ', ',k2.klientiNimi)
from deleted
inner join inserted on deleted.klientID=inserted.KlientID
inner join klient k1 on deleted.klientID=k1.klientId
inner join klient k2 on inserted.klientID=k2.klientId;

XAMPP

loonud tabeli autoRemont

CREATE TABLE autoRemont(
autoID int PRIMARY KEY AUTO_INCREMENT,
automark varchar(100),
remont text,
klientID int
);
SELECT * FROM autoRemont

Loonud seose

ALTER TABLE autoremont ADD CONSTRAINT fk_klient
FOREIGN KEY (klientID) References klient(klientId) 

Täitis autoremont tabeli

triger uue autoremondi lisamiseks

insert into logid(kuupaev,andmed,kasutaja)
VALUES(
NOW(),
CONCAT(
    'Lisatud andmed ja kliendi nimi: ',NEW.remont, ',',NEW.klientiNimi),
USER())
from autoremont a
inner join klient k
on a.klientID=k.klientId

Kontrollimiseks

INSERT INTO autoremont(automark,remont,klientID)
VALUES ('Volvo','Rataste vahetus',1)

triger autoremondi uuendamiseks

INSERT INTO logid(kuupaev,andmed,kasutaja)
SELECT 
NOW(),
CONCAT(
    'Vana andmed: ',old.automark,', ',old.remont,', ',k1.klientiNimi
    ' | Uued andmed: ',new.automark,', ',new.remont,', ',k2.klientiNimi)
USER()
from autoremont a
    INNER JOIN klient k1 on old.klientId=k1.klientId
    INNER JOIN klient k2 on new.klientId=k2.klientId
where a.klientID=new.klientID

Kontrollimiseks