Tengo una restricción de clave externa en mi tabla, quiero agregarla EN ELIMINAR CASCADA.
He intentado esto:
alter table child_table_name modificar restricción nombre_fk clave foránea (child_column_name) referencias parent_table_name (parent_column_name) en delete cascade;
No funciona
EDITAR:
La clave externa ya existe, hay datos en la columna de clave externa.
El mensaje de error que recibo después de ejecutar la declaración:
ORA-02275: dicha restricción referencial ya existe en la tabla
Respuestas:
No puede agregar
ON DELETE CASCADE
a una restricción ya existente. Tendrás quedrop
y recreate
la restricción. La documentación muestra que laMODIFY CONSTRAINT
cláusula solo puede modificar el estado de una restricción (es decir:ENABLED/DISABLED
...).fuente
Primero
drop
su clave externa y pruebe su comando anterior, ponga enadd constraint
lugar demodify constraint
. Ahora este es el comando:fuente
Este PL * SQL escribirá en DBMS_OUTPUT un script que eliminará cada restricción que no tenga una cascada de eliminación y la volverá a crear con la cascada de eliminación.
NOTA: ejecutar el resultado de este script es BAJO SU PROPIO RIESGO. Lo mejor es leer el guión resultante y editarlo antes de ejecutarlo.
fuente
Como se explicó anteriormente:
Como puede ver, esos deben ser comandos separados, primero soltar y luego agregar.
fuente
go
con punto y coma como en Postgres y SqlServer. Pero los códigos centrales restantes son estándar SQL. Prueba con punto y coma, acabo de cambiarlo[
o]
no son válidos en SQL estándar (y Oracle). Oracle tampoco admiteon update
cláusula para una clave foránea.[
]
son SqlServer específicos. Lo limpiaré más. Sobreon update
lo que no puedo decir nada.Respuesta para usuarios de MySQL:
fuente
Para cualquiera que use MySQL:
Si ingresa a su
PHPMYADMIN
página web y navega a la tabla que tiene la clave externa que desea actualizar, todo lo que tiene que hacer es hacer clic en el que seRelational view
encuentra en laStructure
pestaña y cambiar laOn delete
opción de menú de selección aCascade
.Imagen que se muestra a continuación:
fuente
¡Aquí hay una solución práctica! Estoy usando SQL Server 2008 R2.
Como desea modificar la restricción FK agregando ON DELETE / UPDATE CASCADE, siga estos pasos:
NUMERO 1:
Haga clic derecho en la restricción y haga clic para modificar
NÚMERO 2:
Elija su restricción en el lado izquierdo (si hay más de uno). Luego, en el lado derecho, contraiga el punto " INSERTAR Y ACTUALIZAR la especificación " y especifique las acciones en la fila Eliminar regla o Actualizar regla para satisfacer sus necesidades. Después de eso, cierre el cuadro de diálogo.
NUMERO 3:
El último paso es guardar estas modificaciones (¡por supuesto!)
PD: Me salvó de un montón de trabajo, ya que quiero modificar una clave principal a la que se hace referencia en otra tabla.
fuente
Si desea cambiar una clave foránea sin soltarla, puede hacer lo siguiente:
fuente
fuente