Ich versuche, eine neue Spalte hinzuzufügen, die ein Fremdschlüssel sein wird. Ich konnte die Spalte und die Fremdschlüsseleinschränkung mit zwei separaten ALTER TABLE
Befehlen hinzufügen :
ALTER TABLE one
ADD two_id integer;
ALTER TABLE one
ADD FOREIGN KEY (two_id) REFERENCES two(id);
Gibt es eine Möglichkeit, dies mit einem ALTER TABLE-Befehl anstelle von zwei zu tun? Ich konnte mir nichts einfallen lassen, was funktioniert.
Antworten:
Wie so oft bei SQL-bezogenen Fragen hängt es vom DBMS ab. In einigen DBMS können Sie durch Kommas getrennte ALTER-Tabellenoperationen kombinieren. Beispielsweise...
Informix- Syntax:
Die Syntax für IBM DB2 LUW ist ähnlich und wiederholt das Schlüsselwort ADD, erfordert jedoch (wenn ich das Diagramm richtig gelesen habe) kein Komma, um die hinzugefügten Elemente zu trennen.
Microsoft SQL Server- Syntax:
Bei einigen anderen können Sie solche ALTER TABLE-Operationen nicht kombinieren. Standard SQL erlaubt nur eine einzelne Operation in der Anweisung ALTER TABLE. In Standard SQL muss dies also in zwei Schritten erfolgen.
quelle
In MS-SQLServer:
quelle
Für SQL Server sollte es so etwas wie sein
quelle
In MS SQL SERVER:
Mit benutzerdefiniertem Fremdschlüsselnamen
Ohne benutzerdefinierten Fremdschlüsselnamen
quelle
In Oracle :
quelle
2020 Update
Es ist eine ziemlich alte Frage, aber die Leute kehren immer noch darauf zurück, wie ich sehe. Falls Ihnen die obigen Antworten nicht geholfen haben, stellen Sie sicher, dass Sie für die neue Spalte denselben Datentyp wie die ID der anderen Tabelle verwenden.
In meinem Fall habe ich Laravel verwendet und für alle meine IDs "vorzeichenlose Ganzzahl" verwendet, da es keinen Sinn macht, eine negative ID LOL zu haben.
Dafür ändert sich die unformatierte SQL-Abfrage folgendermaßen:
Ich hoffe, es hilft
quelle
Sie können dies wie unten in SQL Server tun
quelle
PostgreSQL-DLL zum Hinzufügen einer FK-Spalte:
quelle
ALTER TABLE TableName ADD NewColumnName INTEGER, FOREIGN KEY(NewColumnName) REFERENCES [ForeignKey_TableName](Foreign_Key_Column)
quelle
Für DB2 lautet die Syntax:
quelle
Wenn Sie auch Standardwerte hinzufügen müssen, falls die Tabelle bereits einige Zeilen enthält, fügen Sie den Wert DEFAULT hinzu
quelle
Versuche dies:
quelle