[ TasmanF1 @ 30.06.2013. 22:37 ] @
Pozdrav narode, problem je sledeci Napisao sam update trigger koji proverava odredjene uslove, pa u zavisnosti od toga update-uje odredjene vrednosti... Triger se poziva na: Code: UPDATE Podaci SET podatakA = 1, podatakB = 2, podatakC = 3, podatakD = 4; Kod za trigger: Code: CREATE TRIGGER ProveraUnosa ON Podaci AFTER UPDATE AS DECLARE @brojA_stari int, @brojB_stari int, @brojC_stari int, @brojD_stari int, @brojA_novi int, @brojB_novi int, @brojC_novi int, @brojD_novi int, @brojKolona int SELECT @brojA_stari = d.podatakA, @brojB_stari = d.podatakB, @brojC_stari = d.podatakC, @brojD_stari = d.podatakD, @brojA_novi = i.podatakA, @brojB_novi = i.podatakB, @brojC_novi = i.podatakC, @brojD_novi = i.podatakD FROM deleted d, inserted i IF(@brojA_stari != @brojC_stari) BEGIN PRINT N'Ispunjen je uslov za vrednost B, tako da ce ta vrednost biti azurirana'; BEGIN TRANSACTION TransakcijaB UPDATE Podaci SET podatakB = @brojB_novi; COMMIT TRANSACTION TransakcijaB END IF(@brojA_novi = @brojA_stari) BEGIN PRINT N'Ispunjen je uslov za vrednost A, tako da ce ta vrednost biti azurirana'; BEGIN TRANSACTION TransakcijaA UPDATE Podaci SET podatakA = @brojA_novi; COMMIT TRANSACTION TransakcijaB END IF(@brojC_novi < @brojB_novi) BEGIN PRINT N'Ispunjen je uslov za vrednost C, tako da ce ta vrednost biti azurirana'; BEGIN TRANSACTION TransakcijaC UPDATE Podaci SET podatakC = @brojC_novi; COMMIT TRANSACTION TransakcijaB END BEGIN TRANSACTION TransakcijaD UPDATE Podaci SET podatakD = @brojD_novi; PRINT N'Ispunjen je uslov za vrednost D, tako da ce ta vrednost biti azurirana'; COMMIT TRANSACTION TransakcijaD Stvar je u tome sto se bez obzira na provere uslova izvrsi cela update transakcija, tako da se azuriraju sve 4. vrednosti. Kako da izvrsim samo update onih vrednosti za koje su ispunjeni uslovi? Neko razmisljanje je da bi nakon komitovanja "TransakcijaD" trebao da zaustavim glavnu transakciju (koja dolazi od update poziva), ali ne znam kako... Sa ROLLBACK se nista nece azurirati. Probao sam i sa SAVE TRANSACTION ali ni to mi ne radi posao, ili prosto ne znam gde da postavim SAVE. ps. Ove transakcije (TransakcijaA, TransakcijaB, TransakcijaC, TransakcijaD) sam pravio kad vec nisam imao nikakvu ideju... |