Records kopiëren (MySQL)

Uit De Vliegende Brigade
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.

Met kopiëren van records wordt bedoeld: Van de ene tabel naar de andere, of binnen een tabel. Vaak is het handig om te kopiëren mbv. een tijdelijke tabel.

Simpel voorbeeld

-- 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;

Inclusief zelf-referentie

Je kunt niet refereren naar dezelfde tabel als welke je update. Wellicht vanwege locking?

Voorbeeld hoe dat wel te doen:

set @teller=(select max(tid) from term_data)+1;
insert into term_data (tid, vid, name, description, weight) values
(
   @teller, 15, "Merk","Zoek op merk en apparaat", 0
);

Auto-increment primary key

Indien de doeltabel een auto-incrementele primaire sleutel bevat: Dat veld leeg laten of NULL-waarde toekennen.

Bronnen