MySQL: Nur Teile eines Datums in Unique-Index aufnehmen?

Subsurf

Grünschnabel
Hallöchen allerseits,

meine Tabelle sieht grundlegend so aus:
Code:
projekt_id|client_id|datum
wobei "projekt_id" ein Fremdschlüssel auf die Tabelle aller Projekte ist, in "client_id" wird eine aus diversen Eigenschaften des Browsers des Benutzers errechnete ID zur (möglichst) eindeutigen Identifikation gespeichert und "datum" enthält das Datum der Eintragung (das Feld ist vom Typ "timestamp").

Jetzt möchte ich, dass pro Woche und pro Projekt nur einmal Daten des Nutzers mit der gegebenen client_id gespeichert werden. Ich hatte überlegt, dass das durch folgenden Unique-Index theoretisch möglich wäre:
Code:
{ `projekt_id`,  `client_id`, YEAR(datum), WEEK(datum) }
Damit könnte in derselben Woche desselben Jahres nur einmal ein Eintrag in die Tabelle stattfinden. Aber leider kann ich wohl keine Funktionen in Indexen verwenden. Muss ich, um diesen Index umsetzen zu können, wirklich zwei extra Felder für "jahr" und "woche" anlegen, obwohl ich eigentlich schon alles nötige in "datum" gespeichert habe?

**edit:
Ich hab jetzt schon einiges rausgefunden: Virtuelle Spalten sind mit dem normalen MySQL-Server noch nicht möglich, werden aber wohl in Version 6 oder 7 kommen und befinden sich derzeit in Entwicklung (http://forge.mysql.com/wiki/MySQL_virtual_columns_preview). Der Code steht schon zum Download zur Verfügung, aber meinen eigenen MySQL-Server zu kompilieren ist keine Option.
Ich muss wohl wirklich eigene Felder dafür anlegen, die ich dann über Triggers oder manuelle Updates mit Werten fülle :/
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück