Moin!
Ich möchte eine Spalte (mediumtext) auf UNIQUE setzen.
Geht aber nicht!
Das ist auch gut so. Denn auf Spalten mit MEDIUMTEXT einen Index setzen zu wollen ist unsinnig.
MySQL erlaubt es, auf die ersten X (bis zu 255) Zeichen solch eines Feldes einen Index zu setzen. Diese Längenangabe fehlt bei dir. Allerdings sagt das Manual nichts über UNIQUE Indices aus, und ich bezweifle auch, dass es sinnvoll ist, sicherzustellen, dass die ersten 255 (oder 1000) Zeichen eindeutig sind, wenn danach noch Zeichen folgen können.
Mediumtext erlaubt 16 Megabyte Text - solche Feldlängen sind (komplett)indexmäßig nur noch über einen Volltext-Index sinnvoll indizierbar, der dir bei deiner vermuteten Aufgabe aber nicht hilft.
Mit dem Spaltentyp varchar(255) komme ich nicht hin weil die zukünftigen Einträge diese Längenbegrenzung überschreiten. Dennoch möchte ich den Spaltentyp auf UNIQUE setzen um doppelte Einträge ohne Gegenprüfung einzutragen.
Bist du sicher, dass du den Sinn von UNIQUE verstanden hast?
In einer UNIQUE-Spalte kann kein Feldinhalt doppelt vorkommen. Solche Spalten sind typischerweise relevant für eindeutige Schlüssel. Auch _mit_ Gegenprüfung könntest du niemals zwei identische Werte in diese Spalte eintragen.
UNIQUE ist eine absichtliche Behinderung des beliebigen, freien Eintragens in die DB, um doppelte Feldinhalte sicher zu verhindern, ohne dass sich die eintragende Applikation darum kümmern muß.
UNIQUE-Indices können auch über mehrere Spalten gehen und so das mehrfache Auftreten der gleichen Inhaltskombination verhindern.
Sofern du aber tatsächlich MEDIUMTEXT mit UNIQUE behandeln willst, frage ich mich, was genau du da vor hast. Mit Sicherheit willst du etwas tun, was man besser anders löst. Also erzähle mal etwas umfassender, was dein Problem ist und was du tun willst.
- Sven Rautenberg
My sssignature, my preciousssss!