Temporary tables (MySQL)
Versie door Jeroen Strompf (overleg | bijdragen) op 7 mei 2019 om 17:49
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.