Controleren of veld waarde al bestaat in tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jaws

Jaws

02/11/2007 16:37:00
Quote Anchor link
Ik vroeg mij af wat de snelste/efficientste manier is om bij het wegschrijven van een nieuwe rij in een tabel te kijken of er geen andere rij in die tabel is waarvan een bepaald veld (niet de key) al eerder in die table stond?

Ik neem aan dat je dit in de query al kun aangeven bij de insert, ik kan echter niet vinden welke sql code dit kan. Enige andere manier die ik zou kunnen bedenken is een extra query die eerst checked of het veld bestaat. Dat is dus een query extra en waarschijnlijk onnodig.
 
PHP hulp

PHP hulp

28/04/2024 16:56:58
 
Frank -

Frank -

02/11/2007 16:50:00
Quote Anchor link
Zet een UNIQUE op de kolom (-men) waar het om gaat en de INSERT zal keurig mislukken wanneer de waarde al bestaat.

Wanneer je MySQL gebruikt, krijg je echter niet te horen wélke UNIQUE-constraint is overtreden, met meerdere UNIQUE-constraints in 1 tabel kan dat dus wat vaag worden. Dan zul je na het optreden van een fout alsnog één of meerdere SELECT-queries moeten uitvoeren om uit te zoeken wat er nu precies fout is gegaan.

In PostgreSQL krijg je exact te horen welke constraint is overtreden, dan weet je in 1 keer welke waarde al een probleem oplevert.

Dit wil echter niet zeggen dat er niet nog meer problemen kunnen zijn! De query mislukt namelijk op de eerste de beste constraint-violation, er wordt niet gekeken of er nog meer violations kunnen optreden. UNIQUE is onmisbaar, wat extra SELECT's kunnen de boel wat gebruikersvriendelijker maken.
 
Jaws

Jaws

02/11/2007 17:20:00
Quote Anchor link
ok, thx.
Ik ga de unique er maar opzetten. Het is opzich niet zo belangrijk welke het is omdat er maar een checked hoeft te worden.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.