SQL Eintrag doppelter Zeilen verhindern

WulfmanGER

Commander
Registriert
Juli 2005
Beiträge
2.413
Hi

ich hab eine Tabelle mit 5 Spalten. In allen Spalten sind doppelte Einträge möglich - aber es darf KEINE doppelter Datensatz aufgenommen werden (also wo die 5 Spalten in genau dieser Kombi bereits existieren).

Ich kann auf keinen der 5 Spalten Unique/Primary Key setzen - da ja eben doppelte Spalten möglich sind

Beim rumgooglen find ich genügend lösungen die aber vorraussetzen das ich Unique/Primary setzen kann :(

Gibt es hier eine einfache möglichkeit mein Problem zu lösen?

Eine möglichkeit wäre vorher ein Select zu machen wo ich prüfen ob es diesen Eintrag schon gibt ... das gefällt mir aber irgendwie nicht :( Alternative hab ich mir überlegt das ich eine 6. Spalte hinzufüge - Inhalt: ich erstelle EINEN String aus allen 5 Spalten - mach nen Hash raus und setze für diese Spalte Unique oder Primary Key ...

Gruß
 
Zuletzt bearbeitet:
Auch möglich aber eine SELECT Abfrage bei einem Eintrag ist sicherlich zu verschmerzen, vielleicht prüftst Du ja noch auf html oder php code etc. und bei den meisten Anwendungen kommen Einträge mit Blick auf die gesamten Datenbankzugriffe doch eher selten vor und sind deshalb auch nicht so arg performance relevent, kommt halt auf die Anwendung an :)
 
Ich denke auch, dass Dir sehr gut geholfen ist wenn man Dir sagt dass es sehr viele Möglichkeiten gibt!


Zum Thema: Die Frage ist wie Du Dir die Lösung vorstellst? Soll das ganze möglichst vollständig durch das DBMS geschehen? Wird nicht klar, da du zwar keinen select möchtest aber Dein Vorschlag prinzipiell in die selbe Richtung geht.
 
Vorweg: Es handelt sich um eine mySQL-DB

lararsc schrieb:
hallo,

du kannst auch mehrere spalten gemeinsam als schlüssel definieren.


wusste nicht das dies geht - hab jetzt alle 5 Felder markiert und dann "Primary Key" ausgewählt. Es pappt jetzt keine doppelte Einträge mehr rein. Scheint zu klappen. (eingefügt wird mit "insert into").

@mastermalte.de:
ist nur ein kleines (lol - ok nicht so klein) privates Projekt - Filmdatenbank (die vorhandenen wie Filmverwaltung usw. können mir einfach zu wenig - daher selber machen *G*). Eintragen werde ausschließlich ich selber - und gucken nur ausgewählte - Performance ist mir daher wurscht ;).


Jetzt ist mir aber noch ein bekanntes Problem aufgekommen - ich ralle das nie so recht ;(

Also der Import findet aus einer XML-Statt. Diese hat als Zeichensatz UTF8. Meine DB ist ebenfalls Charset-UTF8 (Collation UND Charset). Wenn ich das jetzt in die DB pappe kommt bei den Umlauten ö (ö). Ich kenne das von anderen Datenbanken wo ich in phpMyAdmin die Felder problemlos "lesen" kann - Webseite UTF8, Datenbank UTF8 ... was läuft hier jetzt schon wieder schief? Hier müsste ja ein ö drin stehen :( Sieht so aus als ob ich am ende doch ISO in die DB schreibe?

Gruß
Ergänzung ()

So das Zusatzproblem ist behoben:
PHP:
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
nachdem die Verbindung zur DB aufgebaut ist. Alles was jetzt rein/raus geht ist UTF8 ...

Gruß
 
Zurück
Oben