2009-10-09 9 views
43

Czy w mysql mogę dodać kolumnę i klucz obcy w tej samej instrukcji? I jaka jest właściwa składnia do dodawania fk?Jak dodać kolumnę i uczynić ją kluczem obcym w pojedynczym wyciągu MySQL?

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 mu komunikat o błędzie:

masz błąd w składni SQL; sprawdzić podręcznika, który odpowiada twojej wersji serwera MySQL dla prawego składnię używaną w pobliżu „klucz obcy (fk_name) odniesienia reftable (refcolumn) Dnia DELETE CASCADE” na linii 4

Odpowiedz

58

Spróbuj:

ALTER TABLE database.table 
    ADD COLUMN columnname INT DEFAULT(1), 
    ADD FOREIGN KEY fk_name(fk_column) REFERENCES reftable(refcolumn) ON DELETE CASCADE; 
+2

I dla 'fk_name' i' fk_column' muszę wstawić whaat ...? – C4u

+4

@ C4ud3x 'fk_name' będzie nazwą, którą chcesz nadać temu konkretnemu ograniczeniu w celu identyfikacji (opcjonalnie w zapytaniu) mysql automatycznie generuje je automatycznie, a' fk_column' jest kolumną odniesienia, która ma działać jako klucz obcy. –

+0

W porządku, dzięki za wyjaśnienie. – C4u

12

Następująca kwerenda dodaje kolumnę według zapytania alter, a zapytanie wiązania sprawia, że ​​jest to FK w pojedynczym zapytaniu mysql. Można zrobić to w ten sposób,

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`); 

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`); 
-1

Można go używać.

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; 
Powiązane problemy