Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jedan zadatak sa trigerom

[es] :: MS SQL :: Jedan zadatak sa trigerom

[ Pregleda: 2193 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nexxogen
Beograd/Bar

Član broj: 90685
Poruke: 22
*.dynamic.sbb.rs.

Sajt: www.dream-theater.com


Profil

icon Jedan zadatak sa trigerom17.10.2009. u 13:57 - pre 176 meseci
Da li bi neko mogao da mi uradi sledeći zadatak:

"Data je tabela Radnik(RadnikID, ImePrezime, DatumZaposlenja, Bonus, SifraOdeljenja, SifraRukovodioca). Napisati triger kojim se pri povećanju bonusa radnika povećava i bonus prvonadređenog rukovodioca samo ako je razlika između starog bonusa rukovodioca i novog bonusa radnika manja od 100."

Ovo mi je potrebno za ispit pa bih bio jako zahvalan kad bi mi ovo neko uradio.
Just becouse you said it, doesn't make it so!
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
..132.118-dsl.net.metronet.hr.



+19 Profil

icon Re: Jedan zadatak sa trigerom17.10.2009. u 16:57 - pre 176 meseci
http://www.elitesecurity.org/t...mjer-trigera-automatki-izracun
 
Odgovor na temu

nexxogen
Beograd/Bar

Član broj: 90685
Poruke: 22
*.dynamic.sbb.rs.

Sajt: www.dream-theater.com


Profil

icon Re: Jedan zadatak sa trigerom15.11.2009. u 12:17 - pre 175 meseci
Hvala, ali ja ne znam da pišem trigere tako da mi ovo ništa nije pomoglo. Da li bi neko mogao da mi napiše rešenje za ovaj zadatak?
Just becouse you said it, doesn't make it so!
 
Odgovor na temu

M E N E
borislav
Temerin

Član broj: 30434
Poruke: 231
*.static.isp.telekom.rs.



+1 Profil

icon Re: Jedan zadatak sa trigerom16.11.2009. u 08:20 - pre 175 meseci
Pa nauci,
to je i sustina fakulteta, a ne da polozis ispit :-)
...
Jedan asistent na 5. godini faksa nam je rekao "vi ovde studirate, ucite kako da sutra zaradite pare od ove struke i umesto da iskoristite nase prisustvo, da dolazite na konsultacije, da pitate za teme koje nisu pokrivene gradivom, ponasate se kao srednjoskolci i pokusavate samo da dobijete prolaznu ocenu"
Eto, ja ti to prenosim, kao zgodnu, ne previse mudru, ali efektnu recenicu, koja nam se treba reci na prvoj, a ne na petoj godini fakulteta :-)
Triggeri su elementarna stvar, stvarno bi bilo glupo da dobijes 6, a da ih ne znas, makar osnovno o njima:


Triggeri se pisu na tabelama i njih gledas kao "reakciju na neku akciju na toj tabeli"
Baratas sa
1. unesenim podacima (ako je trigger na insert)
2. obrisanim podacima (ako je trigger na delete)
3. i jednim i drugim (ako je trigger na update - gde su "uneseni podaci" novi red, a "obrisani podaci" stari red u update operaciji)

Mozes cuda da uradis, ali nemoj preterivati, jer su spori. Radi brze, britke operacije sa triggerima, bez mnogo logike u njima

Kod tebe je update u pitanju
Proveris da li je <odredjenoPolje> u obrisanom redu za <odredjenuSumu> manje od <odredjenoPolje> u novom redu.
Ako jeste po stranom kljucu nadjes novi red i tamo obavis neku operaciju

to sve mozes uraditi u jednom statementu (stvari koje u proceduralnom programiranju zavrse u IF uslovu, kod SQL-a cesto mozes staviti u WHERE iskaz, to uvek imaj na umu)

mislim da sam ti solidno pomogao.
Sintaksu ces lako naci, postoji zilion sajtova na kojima je mozes naci.
Uhvatili ste me nespremnog
 
Odgovor na temu

Koce
DBA
Serbia, Belgrade

Član broj: 59217
Poruke: 144
*.static.isp.telekom.rs.



+1 Profil

icon Re: Jedan zadatak sa trigerom16.11.2009. u 11:21 - pre 175 meseci
"Jedan asistent na 5. godini faksa nam je rekao "vi ovde studirate, ucite kako da sutra zaradite pare od ove struke i umesto da iskoristite nase prisustvo, da dolazite na konsultacije, da pitate za teme koje nisu pokrivene gradivom, ponasate se kao srednjoskolci i pokusavate samo da dobijete prolaznu ocenu"

Pametno je rekao, al na zalost pitanje ko (i koliko nas) se rukovodilo tim...
 
Odgovor na temu

nexxogen
Beograd/Bar

Član broj: 90685
Poruke: 22
*.dynamic.sbb.rs.

Sajt: www.dream-theater.com


Profil

icon Re: Jedan zadatak sa trigerom16.11.2009. u 20:31 - pre 175 meseci
@M E N E

Baš lijepo od tebe što si mi otkrio smisao studiranja, ali si za vrijeme koje si potrošio pišući taj post mogao prosto da uradiš zadatak. :) Sad ozbiljno, jasno mi je šta hoćeš da kažeš i slažem se da su trigeri nešto što mora da se zna, ali ja trenutno nisam u situaciji da provodim vrijeme učeći iste iz više razloga. Prvo, apsolvent sam već neko vrijeme, a ostalo mi je još 9 ispita do kraja. Iz toga proizilazi i to da imam mnogo drugih stvari da radim istovremeno kad i baze podataka. Zato mi je sada ipak bitnije da položim to što imam do kraja i da završim više fakultet pa ću onda posvetiti malo više vremena pravilnom učenju. Drugo, ni jedna knjiga koju sam pogledao zbog trigera nije u sebi sadržala opširno i sistematsko objašnjenje. U to uključujem i moj fakultetski udžbenik iz kojeg navodno treba da spremam ispit. I treće, ispit mi je PREKOSUTRA u 8 sati ujutru, tako da sada sigurno nemam vremena da se posvetim detaljnom učenju, a prilično je dobra šansa da ću na ispitu dobiti baš ovaj zadatak koji sam ovdje ostavio i zato mi je bitno da znam rešenje. Eto toliko, pa bih te molio (ili bilo koga drugog) ako imaš vremena i živaca da mi uradiš ovaj zadatak (rekao bih da ti je prilično prost na osnovu tvog posta).

P.S.

Neću dobiti 6, u to sam prilično siguran. Dobiću 8 ili 9, ili ću pasti. Stvar je u tome što je ispit tako koncipiran da ako ne dobijem minimum 10 poena na zadacima (ima ih 3, a jedan od njih je triger) od maksimalnih 50 na ispitu, padam bez obzira na ukupan broj poena.
Just becouse you said it, doesn't make it so!
 
Odgovor na temu

M E N E
borislav
Temerin

Član broj: 30434
Poruke: 231
93.86.83.*



+1 Profil

icon Re: Jedan zadatak sa trigerom16.11.2009. u 23:39 - pre 175 meseci
Dugujes pivo

Code:

use Proba --moja baza se tako zove, promeni, naravno
go
IF OBJECT_ID('Proba.dbo.tg_ResenjeZadatka', 'TR' ) IS NOT NULL 
    DROP TRIGGER dbo.tg_ResenjeZadatka;
go 
--ovaj prvi statement ti brise postojeci trigger istog imena, ako postoji; to je znacajna pomoc ako modifikujes ovaj kod 
-- - prostim teranjem ces obrisati postojeci i kreirati novi, modifikovani trigger
/*
tg_ResenjeZadatka -- ovde bi trebalo da stavim komentar;
*/
create trigger tg_ResenjeZadatka
    on Radnik
    for update --dakle, za UPDATE mu kreiras trigger
as
begin
    set nocount on
    
    update R
    set R.Bonus = R.Bonus + (I.Bonus-D.Bonus)  --na postojeci bonus rukovodioca (vidi dole, R je tabela rukovodioca) dodaje onoliko koliko je dodato prasinaru - nisi rekao koliko treba dodati, pa sam ja resio da ovoliko dodam
    from Radnik as R
    inner join Inserted as I  --novi unos
        on R.RadnikID=I.SifraRukovodioca
    inner join Deleted as D  --red kako je izgledao pre modifikovanja
        on D.RadnikID=I.RadnikID
    where abs(R.Bonus - I.Bonus)<100  --ono sto sam napisao u prvom postu - ono sto bi u programiranju stavio u IF ovde cesto mozes staviti u WHERE
    
    set nocount off
end



Obrati paznju da ce Radnik preskociti rukovodioca ako mu das povisicu takvu da preskoci rukovodiocev Bonus za vise od 100. Otprilike se ponasa ovako
za polazne plate radnika 200 (RD) i rukovodioca 300 (RU)

RD 250 -> RU 350 --povecanje kao kod radnika, jer je 300 - 250 < 100
RD 180 -> RU 300 --ne menja se nista kod RU, jer je 300 - 180 > 100
RD 500 -> RU 300 --ne menja se nista kod RU, jer je ABS(300-500) > 100

Ako ti ne odgovara to ponasanje (mislim da ovaj trigger radi BUKVALNO ono sto si napisao, mozda nisi dobro napisao?), menjaj, ali to te nece spasiti za pivo


Uhvatili ste me nespremnog
 
Odgovor na temu

nexxogen
Beograd/Bar

Član broj: 90685
Poruke: 22
*.dynamic.sbb.rs.

Sajt: www.dream-theater.com


Profil

icon Re: Jedan zadatak sa trigerom17.11.2009. u 10:19 - pre 175 meseci
Hvala puno! Dogovorićemo se za pivo!

Tekst zadatka koji sam napisao je prepisan sa roka tako da je to sigurno to. Hvala još jednom!
Just becouse you said it, doesn't make it so!
 
Odgovor na temu

[es] :: MS SQL :: Jedan zadatak sa trigerom

[ Pregleda: 2193 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.