[MySQL] INSERT wanneer rij niet bestaat

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • c-nan
  • Registratie: Juni 2008
  • Laatst online: 00:05
Ik heb een tabel met 3 kolommen, namelijk id (auto_increment), postcode en datum.

Voorbeeld:
code:
1
2
3
4
5
6
7
8
9
mysql> SELECT * FROM tabel;
+----+-------------------------+------------------+
| id | postcode                | datum            |
+----+-------------------------+------------------+
|  1 | 1234AA                  | 20180502         |
|  2 | 1234AA                  | 20180901         |
|  3 | 2222CA                  | 20170403         |
+----+-------------------------+------------------+
3 rows in set (0.00 sec)


Zoals je ziet heeft postcode 1234AA twee entries, maar wel ieder met een ander datum. Dat mag, geen probleem.

Mijn script haalt elders data op en voegt deze toe aan de database. Ik heb geen controle over de geleverde data, als ik dus data aangeleverd krijg wat al voorkomt in mijn database en ik de data 1-op-1 toevoeg een mijn database, krijg ik dubbele entries (weliswaar met een ander id vanwege auto_increment). Dit wil ik voorkomen.

Wat ik kan doen is voordat ik een INSERT doe, een SELECT query uitvoeren, bij 0 resultaten toevoegen, bij 1 resultaat de INSERT query skippen. Dit lijkt mij niet efficient. Dit zou anders - op een efficientere manier - kunnen. Suggesties?

EU DNS: 86.54.11.100

Beste antwoord (via c-nan op 04-05-2019 13:04)


  • ElMacaroni
  • Registratie: November 2012
  • Laatst online: 21:53

ElMacaroni

Laat de zon maar komen!

SE2200+14xSF170S & SE1500M+4xTSM-375

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • ElMacaroni
  • Registratie: November 2012
  • Laatst online: 21:53

ElMacaroni

Laat de zon maar komen!

SE2200+14xSF170S & SE1500M+4xTSM-375


Acties:
  • 0 Henk 'm!

  • Matszs
  • Registratie: Juli 2010
  • Laatst online: 21:06

Matszs

><>

Wat heb je zelf al kunnen vinden? Dit is namelijk toch wel één van de basis dingetjes met databases, het controleren of data x bestaat en anders toevoegen. En omdat het zo'n veel voorkomend ding is, is er ook al zoveel over geschreven en zeker over de efficiëntie.

Acties:
  • 0 Henk 'm!

  • c-nan
  • Registratie: Juni 2008
  • Laatst online: 00:05
Thanks!

Ik werkte met UNIQUE KEY op 1 kolom, maar je kan dus een combinatie van kolommen opgeven.

EU DNS: 86.54.11.100


Acties:
  • +1 Henk 'm!

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 05-10 04:17

Kettrick

Rantmeister!

MySQL ondersteund insert ignore, waarbij de insert wordt overgeslagen, je hoeft dus niet zelf een select te doen.