sql >> Base de Datos >  >> RDS >> Oracle

ORA-02298 ¿No se encuentran las claves principales?

ALTER TABLE WORKPACKAGES
ADD FOREIGN KEY (EMPLOYEEID) REFERENCES EMPLOYEES (EMPLOYEEID);

Cuando se aplica esta clave, Oracle verifica que todos los ID de empleado presentes en la tabla de paquetes de trabajo estén presentes en la tabla de empleados.

Tus opciones:

Encuentre las claves ofensivas ejecutando

SELECT employeeid
FROM   workpackages
WHERE  employeeid NOT IN (SELECT employeeid
                          FROM   employees); 

y luego insértelos en la tabla de empleados.

Otra opción es usar NOVALIDATE de modo que los datos existentes no se verifiquen, pero se validarán las nuevas inserciones/actualizaciones. Ver este violín para una demostración de esto.