Jeg går ud fra, at vi taler om GLOBAL TEMPORARY
tabeller.
Tænk på en midlertidig tabel som på flere tabeller, der oprettes og slettes af hver proces på farten fra en skabelon gemt i systemordbogen .
I Oracle
, DML
af en temporary table
påvirker alle processer, mens data indeholdt i tabellen kun vil påvirke én proces, der bruger dem.
Data i en temporary table
er kun synlig inden for sessionsomfanget. Den bruger TEMPORARY TABLESPACE
til at gemme både data og mulige indekser.
DML
for en temporary table
(dvs. dets layout, inklusive kolonnenavne og indekser) er synlig for alle med tilstrækkelige privilegier.
Det betyder, at eksistens af indekset vil påvirke din proces såvel som andre processer, der bruger tabellen i den forstand, at enhver proces, der ændrer data i den temporary table
bliver også nødt til at ændre indekset.
Data indeholdt i tabellen (og også i indekset), vil tværtimod kun påvirke den proces, der skabte dem, og vil ikke engang være synlige for andre processer.
HVIS du ønsker, at en proces skal bruge indekset, og en anden ikke skal bruge det, skal du gøre følgende:
- Opret to
temporary tables
med samme kolonnelayout - Indeks på en af dem
- Brug indekseret eller ikke-indekseret tabel afhængigt af processen