SQL transakcije i procedure

poruka: 2
|
čitano: 986
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
9 godina
neaktivan
offline
SQL transakcije i procedure - pomoć?

Pozdrav, treba mi pomoć oko ovog zadatka kod brisanja podataka iz jedne tablice a ujedno i drugih ako je povezan preko foreign key-a.

Napišite proceduru koja prima ID kategorije i briše tu kategoriju
•Ako postoje potkategorijeza tu kategoriju, obrisati i njih
•Ako postoje proizvodi iz tih potkategorija, obrisati i njih
•Ako postoje stavke i računi izdani za te proizvode, obrisati i njih
•Neka sva brisanja budu obavljena kao transakcija s pripadnim TRY/CATCH blokovima i COMMIT/ROLLBACK naredbama.

 

 

Napisala sam ovaj kod ali ne znam da li radi ono što je traženo u zadatku:

 

create proc ObrisiKategoriju
@IDKategorija int
as
begin try
begin tran
delete k from Kategorija k inner join Potkategorija as pk on k.IDKategorija = pk.KategorijaID
inner join Proizvod as p on pk.IDPotkategorija = p.PotkategorijaID
inner join Stavka as s on p.IDProizvod = s.ProizvodID
inner join Racun as r on s.RacunID = r.IDRacun
where k.IDKategorija = @IDKategorija
commit tran
print 'Brisanje uspješno'
end try
begin catch
rollback tran
print 'Greška pri brisanju: ' + error_message()
end catch

 

 

 

Poruka je uređivana zadnji put pet 8.9.2017 21:59 (prubic).
 
0 0 hvala 0
7 godina
neaktivan
offline
Re: SQL transakcije i procedure - pomoć?

Mislim da ti je ovaj zadatak koncipiran na nacin da svaku tocku odradis sa select provjerom i delete naredbom,

i da stavis commit na kraju

Dakle, po meni shema ti je ovakva u begin tran:

 

//provjera kategorije i brisanje (primjer)

if exists(select 'x' from Kategorija where IDKategorija = @IDKategorija)

delete from kategorija where idkategorija = @idKategorija

 

--pa nastavis po istoj shemi

 

// provjera podkategorije i brisanje

-|| - || -

 

// provjera proizvoda i brisanje

-|| - || -

 

// provjera stavki i racuna i brisanje

-|| - || -

 

// commit na kraju

commit

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice