Ich versuche, das Konzept der Fremdschlüssel Einschränkungen zu lernen, und habe die manual about mit diesen Arten von Einschränkungen gelesen. Ich verstehe diese Einschränkungen sehr gut und sie funktionieren wie beabsichtigt. Das Handbuch sagt jedoch, dass die Syntax zum Erstellen von Einschränkungen FOREIGN KEY [index_name] (index_col_name, ...)
ist, aber wenn ich die folgende Abfrage ausführe, erhalten beide Fremdschlüsseleinschränkungen einen völlig anderen Namen;Constraint-Name wird ignoriert
CREATE TABLE blog_user (
`blog` INTEGER NOT NULL,
`user` INTEGER NOT NULL,
UNIQUE `blog_user` (`blog`, `user`),
FOREIGN KEY `blog_reference` (`blog`)
REFERENCES `blog` (`id`)
ON UPDATE CASCADE
ON DELETE RESTRICT,
FOREIGN KEY `user_reference` (`user`)
REFERENCES `user` (`id`)
ON UPDATE CASCADE
ON DELETE CASCADE
) ENGINE = InnoDB;
Constraint-Name führt in blog_ibfk_1
statt blog_reference
und user_ibfk_1
statt user_reference
. Warum bekommen sie ihren eigenen Namen, anstatt den, den ich gesagt habe?
Danke, es stellt sich heraus, dass ich nicht ganz das Handbuch verstanden. Ich dachte, dass der Constraint-Name durch den 'index_name' bestimmt wurde, aber in Wirklichkeit war es das' Symbol'. Durch Hinzufügen des 'CONSTRAINT constraint_name'-Teils werden diese korrekt benannt! – Daniel