En mysql, ¿puedo agregar una columna y una clave externa en la misma declaración? ¿Y cuál es la sintaxis adecuada para agregar el fk?
Aquí está mi SQL:
ALTER TABLE database.table
ADD COLUMN columnname INT DEFAULT(1),
FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE;
... y el mensaje de error que lo acompaña:
Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de 'FOREIGN KEY (fk_name) REFERENCES reftable (refcolumn) ON DELETE CASCADE' en la línea 4
fk_name
yfk_column
tengo que insertar qué ...?fk_name
será un nombre que le gustaría darle a esta restricción particular con el propósito de identificación (eso es opcional en la consulta) mysql también lo genera automáticamente, yfk_column
es la columna de referencia que desea que funcione como clave externa.La siguiente consulta agrega una columna por consulta alter y la consulta de restricción la convierte en un FK en una sola consulta mysql. Puedes hacerlo así
SINTAXIS:
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`);
EJEMPLO:
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`);
fuente
Esto se puede simplificar un poco. Solo necesita agregar la palabra clave "ADD" antes de "FOREIGN KEY". Añadiendo un ejemplo a continuación.
ALTER TABLE database.table ADD COLUMN columnname INT DEFAULT(1), ADD FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE;
fuente
Puedes usarlo.
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;
fuente