Kann ich in MySQL eine Spalte und einen Fremdschlüssel in derselben Anweisung hinzufügen? Und wie lautet die richtige Syntax zum Hinzufügen des fk?
Hier ist mein SQL:
ALTER TABLE database.table
ADD COLUMN columnname INT DEFAULT(1),
FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE;
... und die dazugehörige Fehlermeldung:
Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von 'FOREIGN KEY (fk_name) REFERENCES reftable (refcolumn) ON DELETE CASCADE' in Zeile 4
fk_name
undfk_column
ich muss was einfügen ...?fk_name
ist ein Name, den Sie dieser speziellen Einschränkung zum Zwecke der Identifizierung geben möchten (dies ist in der Abfrage optional). MySQL generiert ihn ebenfalls automatisch undfk_column
ist die Referenzierungsspalte, die als Fremdschlüssel verwendet werden soll.Die folgende Abfrage fügt eine Spalte nach Änderungsabfrage hinzu, und die Einschränkungsabfrage macht sie zu einer FK in einer einzelnen MySQL-Abfrage. Sie können es so machen,
SYNTAX:
ALTER TABLE `SCHEMANAME`.`TABLE1` ADD COLUMN `FK_COLUMN` BIGINT(20) NOT NULL, ADD CONSTRAINT `FK_TABLE2_COLUMN` FOREIGN KEY (`FK_COLUMN`) REFERENCES `SCHEMANAME`.`TABLE2`(`PK_COLUMN`);
BEISPIEL:
ALTER TABLE `USERDB`.`ADDRESS_TABLE` ADD COLUMN `USER_ID` BIGINT(20) NOT NULL AFTER `PHONE_NUMBER`, ADD CONSTRAINT `FK_CUSTOMER_TABLE_CUSTOMER_ID` FOREIGN KEY (`USER_ID`) REFERENCES `USERDB`.`CUSTOMER_TABLE`(`CUSTOMER_ID`);
quelle
Dies kann etwas vereinfacht werden. Sie müssen nur das Schlüsselwort "ADD" vor "FOREIGN KEY" hinzufügen. Beispiel unten hinzufügen.
ALTER TABLE database.table ADD COLUMN columnname INT DEFAULT(1), ADD FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE;
quelle
Du kannst es benutzen.
ALTER TABLE database.table ADD COLUMN columnname INT DEFAULT(1); ALTER TABLE database.table add FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE;
quelle