¿Cómo modificar una tabla existente en MySQL, estableciendo la clave externa en otra tabla, usando la línea de comando?Cómo alterar la clave externa de una tabla MySQL usando la línea de comando
Respuesta
Debe eliminar el existente foreign key
y crear otro. Por ejemplo así:
ALTER TABLE my_table DROP FOREIGN KEY my_key;
ALTER TABLE my_table ADD CONSTRAINT my_key FOREIGN KEY ('some_id')
REFERENCES some_new_table ('some_other_id') ON UPDATE CASCADE ON DELETE CASCADE;
Tu código funciona, pero tengo una pregunta relacionada. Cuando traté de combinar esas dos consultas en una sola consulta, 'ALTER TABLE my_table DROP ..., ADD ...' Obtuve un error, _errno: 121 "Duplicar clave al escribir o actualizar" _. ¿Me estoy perdiendo algo, o es realmente imposible combinar esas consultas? – iloo
Ejecutar help alter table
en mysql
símbolo del sistema y la salida es en gran medida explica por sí mismo.
Busque add constraint
con la cláusula foreign key
y aplíquela en su mesa.
mysql> help alter table
Name: 'ALTER TABLE'
Description:
Syntax:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP {INDEX|KEY} index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_option ...
que fue capaz de lograr lo mismo mediante:
ALTER TABLE the_table_name
ADD CONSTRAINT the_name_of_column_you_want_to_use_as_foreign_key
REFERENCES other_table_primary_id (Column_name)
Si tiene varias claves externas encadenados juntos y se produce un error que termina con errorno 15x
lo más probable es que hay otras tablas que dependen de la clave externa que intentas eliminar.
Para soltar la clave externa cuando recibe ese error, tendrá que hacer SET FOREIGN_KEY_CHECKS = 0;
y luego primero debe soltar las claves externas en las tablas que no tienen otras tablas dependientes de ellas. A continuación, puede colocar con éxito las claves externas en la siguiente tabla en la cadena, y así sucesivamente.
Cuando haya terminado, asegúrese de ejecutar SET FOREIGN_KEY_CHECKS = 1;
nuevamente.
- 1. Pregunta de la clave externa de MySQL
- 2. Cómo obtener la tabla una clave externa se refiere a
- 3. clave externa en la tabla myisam alternativa?
- 4. Cómo eliminar una clave única de la tabla mysql
- 5. ¿Clave externa de columna múltiple en MySQL?
- 6. ¿Cómo generar una clave openSSL usando una frase de contraseña desde la línea de comando?
- 7. Cuándo utilizar una clave externa en MySQL
- 8. tabla MySQL añadir restricción de clave externa conduce a errores
- 9. MySQL: Insertar si existe una clave externa
- 10. MySQL - Clave externa única
- 11. Restricción de clave externa MySQL - Columna entera
- 12. MySQL Sintaxis en la creación de la clave externa
- 13. mysql concepto de clave externa
- 14. ¿Cómo cambiar la acción referencial de la clave externa? (Comportamiento)
- 15. clave externa de MySQL para permitir NULL?
- 16. Alterar la columna de la tabla para la clave principal y la identidad
- 17. ¿Cómo agrego una clave externa a una tabla SQLite existente?
- 18. ¿Cómo puedo consultar utilizando una clave externa en MySQL?
- 19. Referencia de clave externa a la tabla en otro esquema
- 20. Ignorar restricciones de clave externa de MySQL en PHP
- 21. Cómo actualizar el valor de la clave externa en la base de datos mysql
- 22. MySQL 5.5 restricción de clave externa falla cuando existe una clave externa
- 23. Tamaño de clave principal/externa de MySQL?
- 24. mysql: Copie la estructura de la tabla incluyendo claves externas
- 25. Usando eclipse comparator desde la línea de comando
- 26. Clave externa para la clave compuesta
- 27. No se puede eliminar la tabla: una restricción de clave externa falla
- 28. MySQL - Usar clave externa como clave principal también
- 29. ¿Cómo creo una clave externa para la tabla de Usuario en Django?
- 30. clave única en toda la tabla mysql?
Intenté utilizar Google, y no encontré nada que cubra este caso exacto. Sé hacerlo en MySQL Administrator o crear una tabla con una clave externa, pero no sé esto en la pregunta mencionada. –
Tenga en cuenta que puede encontrar la documentación del producto en Google con 'mysql 5.7 alter table'. –