In MySQL, wenn Sie eine MyISAM-Tabelle, die in etwa so aussieht:Emulate MyISAM Composite Primärschlüssel mit einem Autoinkrement-Verhalten in InnoDB
CREATE TABLE `table1` (
`col1` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`col2` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`col2`, `col1`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;
wenn Sie Zeilen dann die autoincrement Basis einfügen wird für jede unterschiedliche col2 eindeutig sein Wert. Wenn meine Erklärung nicht klar genug ist, sollte this Antwort besser erklären. InnoDB folgt diesem Verhalten jedoch nicht. In der Tat wird InnoDB Sie sogar nicht erlauben, col2 als erstes in der Primärschlüsseldefinition zu setzen.
Meine Frage ist, ist es möglich, dieses Verhalten in InnoDB irgendwie ohne Rückgriff auf Methoden wie MAX (ID) +1 oder dergleichen zu modellieren? Der nächste, den ich finden konnte, ist this, aber es ist für PostgreSQL.
edit: misspelling in Titel
Für diejenigen, die, wie ich, dieses Feature nicht kennen, [die Formulierung im Handbuch] (http://dev.mysql.com/doc/refman/5.6/en/example-auto-increment.html) kann expliziter sein: "Für MyISAM-Tabellen können Sie' AUTO_INCREMENT' für eine sekundäre Spalte in einem mehrspaltigen Index angeben. In diesem Fall wird der generierte Wert für die 'AUTO_INCREMENT'-Spalte als' MAX (auto_increment_column) + 1 berechnet WHERE Präfix = gegebenes Präfix – RandomSeed
AS für die Lösung sehe ich keine andere Option, als einen Trigger auf Ihrer Tabelle zu erzeugen, wie in dem von Ihnen erwähnten Post vorgeschlagen Die Syntax für Trigger in [MySQL ist nicht so verschieden] (http: //dev.mysql.com/doc/refman/5.6/de/create-trigger.html). – RandomSeed