Deshabilitar restricciones en Oracle
Como puedo en Oracle deshabilitar todas restricciones de golpe, sin que estas se pierdan para que asi luego pueda volver a habilitarlas todas otra vez.
Mi objetivo es no tener que borrarlas todas y tener luego que volver a crearlas.
Mi objetivo es no tener que borrarlas todas y tener luego que volver a crearlas.
para ver una lista de constraints puedes user la tabla user_constraints y crear un log de sentencias del tipo
select 'Alter table ' , table_name, ' disable constraint ',constraint_name,';'
from user_constraints where table_name = 'ADICIONALES' and constraint_type = 'R';
por ej. para una tabla y tipo FK
esto te genera un log de sentencias que después las puede ejecutar , puedes poner spool c:deshabilitar.sql antes de correrlo para que la salida vaya a un archiv en disco
luego dale spool off
Haces lo mismo pero cambiando Disable por Enable para habilitar las restricciones
suerte
select 'Alter table ' , table_name, ' disable constraint ',constraint_name,';'
from user_constraints where table_name = 'ADICIONALES' and constraint_type = 'R';
por ej. para una tabla y tipo FK
esto te genera un log de sentencias que después las puede ejecutar , puedes poner spool c:deshabilitar.sql antes de correrlo para que la salida vaya a un archiv en disco
luego dale spool off
Haces lo mismo pero cambiando Disable por Enable para habilitar las restricciones
suerte
La instrucción directamente serÃa :
SELECT \'ALTER TABLE \' || TABLE_NAME || \' DISABLE CONSTRAINT \' || CONSTRAINT_NAME || \';\' FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE = \'R\';
SELECT \'ALTER TABLE \' || TABLE_NAME || \' DISABLE CONSTRAINT \' || CONSTRAINT_NAME || \';\' FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE = \'R\';
