Doppelte einträge in mysql-Datenbank verhindern
Paco
- datenbank
Hallo!
Ich möchte in eine mySQL-Tabelle schreiben, in der in jeder Spalte (außer dem Primärschlüssel natürlich) werte doppelt vorkommen können, sie sollen nur nicht in allen drei Spalten gleich sein. Bisher mach ich das so:
$query = "SELECT a, b, c FROM tabelle WHERE a = '$a' AND b = '$b' AND c = '$c' ";
$result = (mysql_query($query));
$anzahl = mysql_num_rows($result);
if($anzahl == 0 ) {
$query = "INSERT INTO tabelle ( a, b, c ) VALUES ( '$a', '$b', '$c' )";
}
Mein Script funktioniert aber leider nicht wie es soll (einzelheiten spare ich an dieser stelle aus) und ich denke, dass es an diesem Konstrukt liegen muss. Gibt es ein SQL-statement, dass beim INSERT darauf prüft ob ALLE Einträge so schon in der Tabelle stehen?
Danke und liebe Grüße
Paco
Gibt es ein SQL-statement, dass beim INSERT darauf prüft ob ALLE Einträge so schon in der Tabelle stehen?
ggf hilft dir ON DUPLICATE KEY UPDATE
Hi,
Ich möchte in eine mySQL-Tabelle schreiben, in der in jeder Spalte (außer dem Primärschlüssel natürlich) werte doppelt vorkommen können, sie sollen nur nicht in allen drei Spalten gleich sein.
leg einen Unique Index auf die drei Spalten.
Cheatah
Hallo Cheatah,
hatte ich, aber ich möchte ja nur Einträge verhindern, wo alle drei Spalten so schon vorhanden sind. Argh, Erklärlegastheniker..
Tabelle:
a b c
d e f
g h i
Neuer Datensatz:
a b d -> ok
d e g -> ok
g h i -> bös!
Kann man denn einen Index legen der sich auf drei Spalten gleichzeitig bezieht, also quasi "a b c" als Unique?
leg einen Unique Index auf die drei Spalten.
Cheatah
Hi,
Kann man denn einen Index legen der sich auf drei Spalten gleichzeitig bezieht, also quasi "a b c" als Unique?
Genau das war doch Cheatahs Vorschlag:
leg einen Unique Index auf die drei Spalten.
MfG ChrisB
Hi,
hatte ich, aber ich möchte ja nur Einträge verhindern, wo alle drei Spalten so schon vorhanden sind. Argh, Erklärlegastheniker..
ja. Dann sollte auf diesen drei Spalten ein Unique Index liegen. Einer, nicht je einer.
Kann man denn einen Index legen der sich auf drei Spalten gleichzeitig bezieht, also quasi "a b c" als Unique?
Ja.
Cheatah