dedlfix: Doppelte Einträge vermeiden

Beitrag lesen

echo $begrüßung;

Mittels "SELECT COUNT(*)  FROM tabelle WHERE Name == ".$_POST['name'].";" ermitteln, ob der Wert schon vorkommt. Wenn das Ergebniss grösser 0 ist, dann nicht speichern und Fehlermeldung "Doppelter Wert" ausgeben.

Da du diesen Vorgang sicher nicht atomar anlegen willst, kann es hier passieren, dass zwischen Abfrage und Eintragen eine weitere Abfrage ebenfalls 0 ergibt. Dieser Fall ist zwar relativ unwahrscheinlich, doch warum solltest du dich darauf verlassen, wenn du mit der Unique-Index-Lösung zum vergleichbaren Aufwand auf der sicheren Seite bist. Wenn du 1. richtig atomar anlegen willst, bist du mit 2. sogar deutlich günstiger im Rennen.

Ich würde vermuten Lösung 2 wäre bei besonders bei grossen Datenmengen performanter?

Das dürfte egal sein. In beiden Fälle muss nur im Index nachgesehen werden. Du hättest doch bei 1. einen angelegt, nicht?

Wie steht es mit der Kompatibilität zu verschiedenen MySQL Versionen?

Unique Index gibt es mindestens schon seit ewig. Stored Procedures (bei denen ich grad nicht weiß, ob die atomar arbeiten - vermutlich nicht von Haus aus) und Transactions gibt es erst ab V5.0 bzw. nur mit der InnoDB Storage Engine.

echo "$verabschiedung $name";