Temporary tables (MySQL)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Voorbeeld

De gebruikelijke manier om records binnen een tabel te kopiëren, is door gebruik van een tijdelijke tabel:

-- Maak een tijdelijke tabel, en vul die met een subset van een andere tabel
--
CREATE TEMPORARY TABLE tbl_tmp SELECT * FROM tbl_invoices WHERE id = 99;
--
-- Pas de tijdelijke tabel aan
--
UPDATE tbl_tmp SET id=100 WHERE id = 99;
--
-- Voeg de tijdelijke tabel in, in de brontabel
--
INSERT INTO tbl_invoices SELECT * FROM tbl_tmp WHERE id = 100;
--
-- Tijdelijke tabel opdoeken
--
DROP TABLE tbl_tmp;

Maar één keer openen per statement

Je kunt in een query of stored procedure niet meer dan één keer refereren naar dezelfde tijdelijke tabel. Bv.:

mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'

Dat is vaak een onthutsende beperking, met een hele eenvoudige oplossing: Gebruik een niet-tijdelijke tabel.

Toepassing: In een applicatie-db!

In mei 2019 een passende toepassing gevonden van tijdelijke tabellen: Om tussentijdse resultaten op te slaan in een WordPress-database: Die database wil ik zo min mogelijk aanpassen, dus een tijdelijke tabel is een prima oplossing.

Bronnen