Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrare de laborator nr. 9
la disciplina: Baze de date i cunotine
tema: Crearea i utilizarea declanatoarelor
Chiinu 2016
Coninut
Sarcina 1............................................................................................................................................4
Sarcina 2............................................................................................................................................4
Sarcina 3............................................................................................................................................6
Sarcina 4............................................................................................................................................8
Sarcina 5..........................................................................................................................................10
Concluzii..........................................................................................................................................11
2
Sarcina lucrrii
4. S se creeze un declanator DDL care ar interzice modificarea coloanei Model n tabelele bazei
de date calculatoare cu afiarea mesajului respectiv.
5. S se creeze un declanator DDL care ar interzice modificarea schemei bazei de date n afara
orelor de lucru.
6. S se creeze un declanator DDL care, la modificarea proprietile coloanei Pret dintr-un tabel,
ar face schimbri asemntoare n mod automat n restul tabelelor.
3
Sarcina 1
alter trigger inregistrare_noua on furnizor
after update
as set nocount on
if(update(Adresa))
select 'Furnizorul '+ RTRIM(upper(inserted.Nume))+
'are adresa noua -'+upper(inserted.Adresa)+' . ' +
'Adresa veche a furnizorului a fost -' + RTRIM(upper(deleted.Adresa))+' .'
from inserted inner join deleted
on inserted.Nume=deleted.Nume
Sarcina 2
pc_uri:
else print 'Din cauza constringerii referentiale, nu este posibila inserarea completa a datelor.
Pentru evitarea erorilor la nivel de cheie externa, tuplurile inadmisibile au fost sterse.'
delete from pc_uri where not pc_uri.model in (select model from produse)
laptop_uri:
4
else print 'Din cauza constringerii referentiale, nu este posibila inserarea completa a datelor.
Pentru evitarea erorilor la nivel de cheie externa, tuplurile inadmisibile au fost sterse.'
delete from laptop_uri where not laptop_uri.model in (select model from produse)
imprimante:
else print 'Din cauza constringerii referentiale, nu este posibila inserarea completa a datelor.
Pentru evitarea erorilor la nivel de cheie externa, tuplurile inadmisibile au fost sterse.'
delete from imprimante where not imprimante.model in (select model from produse)
5
Sarcina 3
Produse:
Pc_uri:
Laptop_uri:
6
raiserror ( 'Acest model nu poate fi sters, deoarece pretul acestuia depaseste 300 si producatorul
acestuia este A',2,1)
rollback transaction;
end
else print 'Modelul acestui producator va fi sters'
Imprimante:
if update(id)
begin
print 'Nu puteti modifica valorile acestui atribut'
rollback transaction
end
else print 'Modificarile au fost efectuate cu succes'
7
create trigger editIdL on laptop_uri
instead of update,insert
as
if update(id)
begin
print 'Nu puteti modifica valorile acestui atribut'
rollback transaction
end
else print 'Modificarile au fost efectuate cu succes'
if update(id)
begin
print 'Nu puteti modifica valorile acestui atribut'
rollback transaction
end
else print 'Modificarile au fost efectuate cu succes'
Sarcina 4
Pc_uri:
if update(Model)
begin
print 'Nu puteti modifica valorile acestui atribut'
rollback transaction
end
else print 'Modificarile au fost efectuate cu succes'
Laptop_uri:
8
if update(Model)
begin
print 'Nu puteti modifica valorile acestui atribut'
rollback transaction
end
else print 'Modificarile au fost efectuate cu succes'
Imprimante:
if update(Model)
begin
print 'Nu puteti modifica valorile acestui atribut'
rollback transaction
end
else print 'Modificarile au fost efectuate cu succes'
Produse:
if update(Model)
begin
print 'Nu puteti modifica valorile acestui atribut'
rollback transaction
end
else print 'Modificarile au fost efectuate cu succes'
9
Sarcina 5
if exists (select * from sys.triggers where parent_class=0 and name='sarcina_5') drop trigger sarcina_5
on database
10
Concluzii
11