MySQL - wie zu verwenden VARCHAR als AUTO INCREMENT Primary Key
Ich bin mit einem VARCHAR als meine primäre Schlüssel. Ich will die "auto increment" es (Basis 62, die unteren groß - /Kleinschreibung, zahlen), Jedoch der folgende code schlägt fehl (aus offensichtlichen Gründen):
CREATE TABLE IF NOT EXISTS `campaign` (
`account_id` BIGINT(20) NOT NULL,
`type` SMALLINT(5) NOT NULL,
`id` VARCHAR(16) NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
funktioniert dies jedoch:
CREATE TABLE IF NOT EXISTS `campaign` (
`account_id` BIGINT(20) NOT NULL,
`type` SMALLINT(5) NOT NULL,
`id` VARCHAR(16) NOT NULL PRIMARY KEY
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Was ist der beste Weg zu verfolgen, Inkrementierung von 'id' mich? (Da auto_increment funktioniert nicht). Muss ich eine andere Tabelle, die enthält die aktuelle iteration-ID? Oder gibt es eine bessere Möglichkeit, dies zu tun?
EDIT: ich möchte klarstellen, dass ich weiß, dass die Verwendung von INT ist ein auto_increment primary key ist der logische Weg zu gehen. Diese Frage ist in der Antwort auf eine vorangegangene Dialog den ich gesehen habe. Dank
- Offtopic: Sind Sie sicher, dass Sie verwenden möchten MyISAM? Für eine relationale Datenbank, müssen Sie innoDB in MySQL zu erstellen Fremdschlüssel.
- Nein, ich bin nicht sicher. Ich habe mit MySQL für eine ganze Weile jetzt, jedoch, wurde mir gesagt, dass MyISAM verwendet werden sollte, die meisten der Zeit und ich ging einfach mit 😛
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden Sie ein INT-Feld
und übersetzen Sie in welchem format auch immer Sie wollen, wählen Sie Zeit
id
VARCHAR(16) not NULL AUTO_INCREMENT PRIMARY KEY ist unmöglich. Aber mit VARCHAR als primary key ist kein Unsinn. Ich wurde lediglich gefragt, wie "increment" zu garantieren Einzigartigkeit. Und btw, ich verwende BIGINT für meine ID, wie es bietet mehr als genug ID ' s für meine Anwendung. "einfach aufhören diesen Unsinn" <-- ich weiß wirklich zu schätzen, dass du dir die Zeit nimmst zu Antworten, und ich respektiere Ihren hohen Ruf ALSO an, aber bitte haben Sie ein wenig mehr Fingerspitzengefühl, als meine Frage war nicht unmöglichBeispiel einer Lösung für Ihr problem:
erstellen Sie eine Datei mit einer eindeutigen Nummer und dann die Inkrement-Funktion.
den Dateinamen können Sie das Präfix und die Datei binären Inhalt eine Zahl darstellen.
wenn Sie eine neue id, um die reg invoque die Funktion
Beispiel
wo "A_PREFIX-" ist der name der Datei, welches Sie verwenden, zum generieren der id für das Feld.