Da SERIALes sich um eine Abkürzung für handeltBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE , sieht es so aus, als würde sich das SERIAL PRIMARY KEYverdoppeln UNIQUEund PRIMARY KEY:
> CREATE TEMPORARY TABLE foo (id SERIAL PRIMARY KEY);
> SHOW CREATE TABLE foo \G
*************************** 1. row ***************************
Table: foo
Create Table: CREATE TABLE `foo` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)
Es gibt definitiv den WTF- Faktor, beide PRIMARY KEYund UNIQUE KEY idin zu sehen SHOW CREATE TABLE, aber sind das wirklich zwei physische Indizes, die ich sehe?
Sollte man die Verwendung PRIMARY KEYmit SERIALund stattdessen das Schreiben bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEYoder die Verwendung SERIALohne Primärschlüssel auf dem Tisch vermeiden ?
10.2.14-MariaDB.
auto_incrementmuss ein Schlüssel sein (Serverfehler 1075). Aber die Quelle ist jemandes Lasiness - es gibt Aliase serialund serial default value, und es gibt keinen Alias serial primary key...