MySQL: Mehrere Primary Keys und Auto-Increment
Ich bin ziemlich neu einrichten Tabellen in MySQL und es ist etwas, was ich gerne machen würde ist ein bisschen mehr Voraus, als ich in der Lage bin, zu tun.
Ich habe zwei Spalten, die als Teil einer zusammengesetzten Primärschlüssel, ist man ein Datum und eine ID, ich möchte ein auto-increment-integer. Für jedes Datum, ich möchte zum zurücksetzen des auto-integer auf 0, also so etwas wie dieses:
|-----------------|
|Date | ID |
|-----------------|
|2012-06-18 | 1 |
|2012-06-18 | 2 |
|2012-06-18 | 3 |
|2012-06-19 | 1 |
|2012-06-19 | 2 |
|2012-06-20 | 1 |
|-----------------|
Dank
- Auto increment-funktioniert nicht auf diese Weise. So haben Sie zum einfügen solcher Datensätze manuell zu haben, erhöht die Anzahl der für jedes Datum.
- Siehe unten meine Antwort, es funktioniert bei MyISAM -, InnoDB nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen Sie einen before insert-trigger.
Diese Weise, und wenn ID schon existiert für den Tag, wird es erhöht. Wenn es nicht, wird es auf 1 gesetzt. Beachten Sie, dass in diesem Szenario-ID nicht
AUTO_INCREMENT
in der Tabelle definition. Es wird einfach durchgeführt, indem der Auslöser.Hier sollte diese Arbeit.
Es ist bekannt, dass Probleme mit innoDB. Hoffe, dies hilft Ihnen.
EDIT: ERGEBNISSE
Über php-myadmin.
Naja, bei mir mysql nicht, was Sie wollen automatisch.
Keine Magie beteiligt.
Error Code: 1075. Incorrect table definition; there can be only one auto column and it must be defined as a key.
ENGINE=MyISAM
zu.ENGINE=MyISAM
mein problem gelöst.Im trigger:
SELECT ID FROM
your_table
WODate
= DATUM(JETZT()) IN max_id;muss sein:
SELECT max(ID) FROM
your_table
WODate
= NEU.key_field IN max_id;aber besser ist Verschluss durch Schlüssel.
das ist besser für gleichzeitige Einsätze auf innodb.