{Oracle} una consulta DELETE

angelique1 Mensajes publicados 81 Fecha de registro   Estado Miembro Última intervención   -  
devMan Mensajes publicados 75 Estado Miembro -
Hola

tengo una consulta que no funciona, no entiendo por qué:

yo estoy eliminando todos los corredores que forman parte del equipo Festina

DELETE
FROM COUREUR
WHERE CodeEquipe IN (
SELECT CodeEquipe
FROM EQUIPE
WHERE NomEquipe = 'Festina'
);

sabiendo que codeEquipe es una clave primaria en la tabla Equipe y es una clave foránea en la tabla coureur

en el error me dicen violación de restricción de integridad; hijos existentes
por favor es urgente ayúdame

Configuración: Windows Vista Safari 532.0

12 respuestas

fiu
 
Hola

La estructura de un delete con join no existe! la sintaxis que has utilizado es totalmente válida.

tu problema es que existen filas que dependen de ciertos corredores Festina. Si eliminas a esos corredores, las filas que dependen de ellos ya no dependerán de nada... y eso, no es bueno.
es similar a si quisieras eliminar al equipo Festina: primero eliminarías a los corredores que dependen de él.

entonces debes primero eliminar las filas que dependen de los corredores a eliminar... Supongo que están en tablas de las que no nos has hablado
una vez realizada esa eliminación, podrás eliminar a tus corredores Festina.

inténtalo entonces
select fils.constraint_name, fils.table_name, col.column_name from all_constraints pere, all_constraints fils, all_cons_columns col where pere.constraint_name = fils.r_constraint_name and fils.constraint_name = col.constraint_name and pere.table_name='COUREUR' and pere.constraint_type='P'
eso debería listarte la(s) tabla(s) y columna(s) que referencian a tus corredores y que bloquean la eliminación.
4
angelique1 Mensajes publicados 81 Fecha de registro   Estado Miembro Última intervención   10
 
hola no sé si me entendiste bien, tengo ganas de eliminar registros, por ejemplo esta consulta quiere decir eliminar todos los corredores que forman parte del equipo Festina, como en la tabla solo tenemos el código del equipo y no el nombre del equipo, así que fue necesario hacer un join y respecto a lo que me diste, Bain? obtuve esto CONSTRAINT_NAME TABLE_NAME COLUMN_NAME FR_NUMCOUREUR PARTICIPANT NUMEROCOUREUR gracias, intenta ayudarme, en serio eres muy amable
0
fiu > angelique1 Mensajes publicados 81 Fecha de registro   Estado Miembro Última intervención  
 
sí, te he entendido bien :)
y si la base se niega a eliminar a los corredores Festina, es simplemente porque quedan de esos corredores que están presentes (o mejor dicho referenciados) en la asociación PARTICIPANT (a la que nunca le has contado).
Me permito devolverte para leer una vez más el capítulo "Integridad referencial". Una vez que lo asimiles, todo te parecerá mucho más claro.
0
fiu
 
hola
simplemente tienes líneas en una tabla X o Y que se refieren a alguno de los corredores que quieres eliminar.
0
angelique1 Mensajes publicados 81 Fecha de registro   Estado Miembro Última intervención   10
 
bain tengo una tabla EQUIPE(codeEquipe,nomEquipe,......) donde codeEquipe es una clave primaria

y la tabla COUREUR(numeroCoureur,...,codeEquipe)
así es la estructura de las tablas

por favor dame la estructura de un delete con join
0
holow1 Mensajes publicados 739 Estado Miembro 71
 
Hola,

para el primer problema es normal que aparezca violación de restricción de integridad

para el segundo problema solo debes aplicar la restricción de clave foránea
0
espoirfazou Mensajes publicados 3 Estado Miembro
 
hola
intenta con esta consulta
delete *
from courreur
where courreur.codequipe=equipe.codeequipe
and equipe.nomequipe='festina'

buena suerte
0
chuka Mensajes publicados 980 Estado Miembro 379
 
Varias soluciones:
O eliminas la restricción en las tablas donde tienes tu clave foránea...
O modificas tu restricción para que las filas de las tablas que tienen tu clave foránea también se eliminen...
https://www.techonthenet.com/oracle/foreign_keys/foreign_delete.php
¡A manipular con precaución!!
@+
--
Por malentendido, ¡puede funcionar!!
0
devMan Mensajes publicados 75 Estado Miembro 15
 
Salud,
En situaciones similares en MySQL
usamos la eliminación en cascada....

ahí me parece que también debes definir delete/update en cascada en la clave foránea..
no estoy seguro !!!!
0
fiu
 
Seamos serios un poco.
¿Un usuario estándar tiene la posibilidad de activar o desactivar restricciones?
¿Tiene la posibilidad de modificar restricciones?
¿Por qué implementar restricciones si luego se van a eliminar?

--
- Mi Clio está averiada, ayúdame
- ¡Pues! ¿por qué no compraste un Peugeot?
0
devMan Mensajes publicados 75 Estado Miembro 15
 
dije pas qu"il va supprimer les contraintes ... c pas ça
je veux dire qu'il doit ajouter les propriétés ON DELETE CASCADE et ON UPDATE CASCADE a la clef étrangère ..
et quand il supprime un primary key il va supprimer automatiquement ses clef étrangère...
Effacement du 'père' => Effacement des 'fils' (en cascade)
s'il est les droit bien sur ....
0
fiu
 
Hola
Primero: no sabemos si Angelique1 tiene derecho a modificar las restricciones en las tablas utilizadas
Segundo: el cascade es un mal hábito: el día que eliminemos accidentalmente un cliente, se eliminan automáticamente sus presupuestos, sus pedidos, sus envíos, sus facturas y sus pagos... la buena jugada.

la solución aquí sigue siendo hacer limpieza en participantes y luego volver a ejecutar la consulta inicial.

--
Ia orana i te matahiti api
0
angelique1 Mensajes publicados 81 Fecha de registro   Estado Miembro Última intervención   10
 
Buenas noches. Cuando creé el usuario le di todos los privilegios
y en lo que respecta a la tabla participant, la clave primaria de la tabla corredor migra a participant
y cuál es la estructura de (on delete cascade). Cuando yo creé mis tablas declaré mis restricciones normalmente sin hacer el delete on cascade, así que por favor ¿cómo podría añadirlo?
0
chuka Mensajes publicados 980 Estado Miembro 379
 
Hola,
tienes la respuesta al post N°8
@+
--
Por malentendido, ¡eso puede funcionar!
0
angelique1 Mensajes publicados 81 Fecha de registro   Estado Miembro Última intervención   10
 
comment se poste 8 svp
0
devMan Mensajes publicados 75 Estado Miembro 15
 
eso quiere decir respuesta n°8 de la discusión
0