Temporary tables (MySQL)

Uit De Vliegende Brigade
Versie door Jeroen Strompf (overleg | bijdragen) op 1 okt 2015 om 15:54 (Nieuwe pagina aangemaakt met '== Voorbeeld == De gebruikelijke manier om records binnen een tabel te kopiëren, is door gebruik van een ''tijdelijke tabel'': <pre> -- Maak een tijdelijke tabel...')
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.

Bronnen