Ik heb een stored procedure die gebruik maakt van een dynamische cursor gebaseerd op een tijdelijke table, om elke keer de children van een record toe te voegen aan diezelfde tijdelijke tabel.
Doordat er geen index op de temp tabel is, worden die records onderaan toe gevoegd en gaat de cursor net zolang door totdat er niets meer aan de tabel toegevoegd is en de fetch next dus geen nieuwe fetch heeft gekregen.
Nu is het theoretisch mogelijk dat twee records naar elkaar verwijzen. Dit wil ik natuurlijk wel even beveiligen. Ik kan een unique op de temp tabel gooien, maar dan zal ik een error krijgen als die een dubbel record vind, terwijl hij 'm van mij mag negeren.
Andere mogelijkheid is om de output van de insert in een tweede temp tabel te probben en een voor een van die records te kijken of het al bestaat, zo ja negeren en zo nee inserten, maar dat zal een redelijke overhead geven.
Als ik via de enterprise manager records copy-paste en er wordt een error opgegooid, dan wordt het record ook niet geinsert.
Mijn vraag is dus, kan ik dat (of iets soortgelijks) ook bouwen in t-sql?
Doordat er geen index op de temp tabel is, worden die records onderaan toe gevoegd en gaat de cursor net zolang door totdat er niets meer aan de tabel toegevoegd is en de fetch next dus geen nieuwe fetch heeft gekregen.
Nu is het theoretisch mogelijk dat twee records naar elkaar verwijzen. Dit wil ik natuurlijk wel even beveiligen. Ik kan een unique op de temp tabel gooien, maar dan zal ik een error krijgen als die een dubbel record vind, terwijl hij 'm van mij mag negeren.
Andere mogelijkheid is om de output van de insert in een tweede temp tabel te probben en een voor een van die records te kijken of het al bestaat, zo ja negeren en zo nee inserten, maar dat zal een redelijke overhead geven.
Als ik via de enterprise manager records copy-paste en er wordt een error opgegooid, dan wordt het record ook niet geinsert.
Mijn vraag is dus, kan ik dat (of iets soortgelijks) ook bouwen in t-sql?