Angenommen, ich habe eine Tabelle und einen Index für sie
original simple table A
------------------------
rowid | id name
123 | 1 A
124 | 4 G
125 | 2 R
126 | 3 P
index on A.id
-------------
id rowid
1 123
2 125
3 126
4 124
An diesem Punkt führe ich diese DML-Anweisung aus
UPDATE A SET id = 5 WHERE id = 4
Was genau passiert, wenn diese Anweisung ausgeführt wird?
a)
BEGIN
go to index
search for `id == 4` (B tree index generally)
find that `rowid = 124`
go to that location
update id in the table
come back (? I am not sure)
update the index
END
b)
BEGIN
go to index
search for `id == 4` (B tree index generally)
update the id value in index
find that `rowid = 124`
go to that location
update id in the table
END
c) Es passiert etwas ganz anderes
Da dies von der Datenbank selbst abhängen kann, Wie läuft das in Oracle ab?
1 Stimmen
Ich vermute, dass es unterschiedliche Implementierungen gibt und viele von ihnen eher zu c) als zu a) oder b) passen...
0 Stimmen
@Henk: Nein. Ich versuche nur zu verstehen, wie das funktioniert. Das ist ein Szenario, das ich mir ausgedacht habe.
0 Stimmen
Also gut. Es sah nur ein wenig künstlich aus.