Alter Tabelle foreign key-Einschränkung
Ich habe eine Tabelle mit 2 Spalten, die ich kopiert aus zwei verschiedenen Tabellen.Was ich nun tun möchte ist, geben Sie eine foreign key-constraint auf die Spalten-Namen, E-Mail und id unten dargestellt.
ALTER TABLE users_role_map
ADD CONSTRAINT FK_users_role_map
FOREIGN KEY (email) REFERENCES usert(email),
FOREIGN KEY (id) REFERENCES rolet(id)
ON UPDATE CASCADE
ON DELETE CASCADE;
Bekomme ich die folgende Fehlermeldung:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'FOREI
GN KEY (id) REFERENCES rolet(id)
ON UPDATE CASCADE
ON DELETE CASCADE' at line 4
InformationsquelleAutor luckysing_noobster | 2012-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie nicht das hinzufügen einer Einschränkung der in dieser Erklärung, die Sie hinzufügen constraints: jede der zwei FOREIGN KEY-Klauseln bedeutet einen separaten Einschränkung. Immer noch, nach der Handbuch, Sie sollten in der Lage sein, um hinzuzufügen, wie viele foreign key-Einschränkungen in einem einzigen ALTER TABLE-Anweisung wie erforderlich. Sie brauchen nur zu zählen
ADD
vor jeder Einschränkung.Beachten Sie, dass constraint-Namen gelten individuell an die Einschränkungen, die Sie hinzufügen, und so möchten Sie vielleicht, um anzugeben
CONSTRAINT name
für den zweiten Fremdschlüssel, wenn Sie wollen, dass es einen bestimmten Namen haben. Gleiche mitON UPDATE/ON DELETE
: Sie gelten für den foreign key, der unmittelbar vor Ihnen.So, die korrigierte Anweisung könnte wie folgt Aussehen:
Ja, die Benennung ist optional. In SQL Server, wo es optional auch bevorzuge ich die Namen angeben, aber.
Ich bekomme die Fehlermeldung. ERROR 1005 (HY000): Can ' T create table 'acsuserdatabase_dbo.#sql-984_10e' (errno : 150)
Aus der manual: “
1005 (ER_CANT_CREATE_TABLE)
Kann keine Tabelle erstellen. Wenn die Fehlermeldung bezieht sich auf Fehler 150, Tabelle-Erstellung ist fehlgeschlagen, da eine foreign key-Einschränkung wurde nicht korrekt gebildet." – ungültige Referenzen in einer der Möchtegern-foreign-key-Spalten?Ich Neige dazu, einen Namen zu wählen, die für einen Fremdschlüssel in einer solchen Weise, dass es hilfreich wäre, um zu sehen, was die foreign-key-Referenzen, Wann immer und wo immer sein name angezeigt wird. Zum Beispiel, im Falle einer foreign key-Verletzung-Fehler, die verletzt, der Schlüssel ist der name in der Fehlermeldung angezeigt. Auch kann ich sagen, ob ein bestimmter Fremdschlüssel definiert wurde, auf eine Tabelle einfach durch einen Blick auf die Liste der Fremdschlüssel. Und wenn ich so löschen Sie einen vorhandenen key, es ist in der Regel einfach, herauszufinden, seinen Namen mit Hilfe des etablierten Regeln zur Namensgebung.
InformationsquelleAutor Andriy M