Czy w mysql mogę dodać kolumnę i klucz obcy w tej samej instrukcji? Jaka jest właściwa składnia dodawania fk?
Oto mój SQL:
ALTER TABLE database.table
ADD COLUMN columnname INT DEFAULT(1),
FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE;
... i towarzyszący komunikat o błędzie:
Masz błąd w składni SQL; sprawdź podręcznik, który odpowiada twojej wersji serwera MySQL, aby znaleźć właściwą składnię, której należy użyć w pobliżu 'FOREIGN KEY (fk_name) REFERENCES reftable (refcolumn) ON DELETE CASCADE' 'w linii 4
fk_name
ifk_column
muszę wstawić whaat ...?fk_name
będzie nazwą, którą chciałbyś nadać temu konkretnemu ograniczeniu w celu identyfikacji (jest to opcjonalne w zapytaniu). Mysql automatycznie je generuje ifk_column
jest kolumną odwołującą się, która ma działać jako klucz obcy.Następujące zapytanie dodaje kolumnę za pomocą zapytania alter, a zapytanie ograniczające sprawia, że jest to FK w pojedynczym zapytaniu mysql. Możesz to zrobić w ten sposób,
SKŁADNIA:
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`);
PRZYKŁAD:
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`);
źródło
Można to nieco uprościć. Wystarczy dodać słowo kluczowe „ADD” przed „FOREIGN KEY”. Dodanie przykładu poniżej.
ALTER TABLE database.table ADD COLUMN columnname INT DEFAULT(1), ADD FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE;
źródło
Możesz tego użyć.
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;
źródło