Records kopiëren (MySQL)

Uit De Vliegende Brigade
Versie door Jeroen Strompf (overleg | bijdragen) op 2 okt 2015 om 12:18
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

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