Ima situacija gde su kursori neizbezni. U ranijim verzijama MS SQL servera, do verzije 2008 recimo, bilo je razloga za koriscenje kursora - zbog brzibe izvrsavanje - za upite tipa 'kumulativna suma' i slicno. Za mnoge zadatke DB administratora kursor je jako korisna stavr, upravo zato sto omogucuje looping. Ma primer, collation nije isti u svim tabelama, a desi se da i u okviru jedne tabele imas kolone na rzlicitim kolcijama, sto izaziva probleme u nekim iskazime. Ako dba odluci da to sve sinhronizuje, on ce onda da vrti kursor na sys.Objects tabeli, da dobije imana svih tabela, i onda ce za svaku da proveri i podesi collation. (Nemoj da me pitas kakao se ovo radi, to radi moj dba). Primeti da on ne izvrsava nikakav upit, nego za scaki korak u kursoru
uradi neki posao
Za trigere, nisam ni rekao da ih ne koristis. Bez njih se cesto ne moze obezbediti integritet podataka. Nazalost, malo ljudi razmislja 'out of the box', pa se trigeri koriste vise nego sto bi moralo. Posto nije lako napisati pouzdan triger, kasnije se desavaju 'neobjasnjive' stvari. U svakom slucaju, ako triger radi posao, neka ga.
Stara garda je morala da pise trigere, jer nekad nisu postojali ni FOREIGN KEYs - uvedeni su u MS SQL tek u verziji 7, a to je posle 1995, cini mi se. Tada je ama bas svaka tabelka zahtevala triger, da bi se odrzao referntial integrity. Na obe tabele je morao da se dodaje triger. Posto je stara garda iz nuzde pisala trigere, oni su taj zanat izucili veoma dobro. Ali, to je stara garda...
Da se vratimo na konkretan problem:
Citat:
Konkretno: treba da 'prodjem' kroz tabelu 'Inserted' i za svaki rekord (u toj tabeli) kreiram upit sa jednom drugom tabelom ?
Sta konkretno treba da uradis za svaki red u'Inserted' tabeli? Mozda mozemo da pomognemo da se to resi bez kursora, u okviru trigera, naravno. Ako ni za sta drugo, barem da dobijes ideju za neki sledeci put.