Dela via


Rullningsbara markörer

I moderna skärmbaserade program rullar användaren bakåt och framåt genom data. För sådana program är det ett problem att återgå till en tidigare hämtad rad. En möjlighet är att stänga och öppna markören igen och sedan hämta rader tills markören når den rad som krävs. En annan möjlighet är att läsa resultatuppsättningen, cachelagrar den lokalt och implementera rullning i programmet. Båda möjligheterna fungerar bra endast med små resultatuppsättningar, och den senare möjligheten är svår att implementera. En bättre lösning är att använda en rullningsbar markör som kan flyttas bakåt och framåt i resultatuppsättningen.

En rullningsbar markör används ofta i moderna skärmbaserade program där användaren rullar fram och tillbaka genom data. Program bör dock endast använda rullningsbara markörer när endast framåtriktade markörer inte utför jobbet, eftersom rullningsbara markörer i allmänhet är dyrare än markörer som endast är framåtriktade.

Möjligheten att flytta bakåt väcker en fråga som inte är tillämplig på framåtriktade markörer: Ska en rullningsbar markör identifiera ändringar som gjorts i rader som tidigare hämtades? Det vill: ska den identifiera uppdaterade, borttagna och nyligen infogade rader?

Den här frågan uppstår eftersom definitionen av en resultatuppsättning – den uppsättning rader som matchar vissa villkor – inte anger när rader kontrolleras för att se om de matchar det villkoret och inte heller anger om rader måste innehålla samma data varje gång de hämtas. Den tidigare utelämnandet gör det möjligt för rullningsbara markörer att identifiera om rader har infogats eller tagits bort, medan det senare gör det möjligt för dem att identifiera uppdaterade data.

Möjligheten att identifiera ändringar är ibland användbar, ibland inte. Ett redovisningsprogram behöver till exempel en markör som ignorerar alla ändringar, eftersom att balansera böcker är omöjligt om markören visar de senaste ändringarna. Å andra sidan behöver ett flygbolags bokningssystem en markör som visar de senaste ändringarna av data; utan en sådan markör måste systemet kontinuerligt göra omfrågningar mot databasen för att visa den mest aktuella flygtillgängligheten.

För att täcka behoven för olika program definierar ODBC fyra olika typer av rullningsbara markörer. Dessa markörer varierar både i kostnad och i deras förmåga att identifiera ändringar i resultatuppsättningen. Observera att om en rullningsbar markör kan identifiera ändringar i rader, kan den bara identifiera dem när den försöker reetch dessa rader; Det finns inget sätt för datakällan att meddela markören om ändringar i de aktuella hämtade raderna. Observera också att synligheten för ändringar också styrs av transaktionsisoleringsnivån. Mer information finns i Transaktionsisolering.

Det här avsnittet innehåller följande avsnitt.