Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

alter table con contrainst

Estas en el tema de alter table con contrainst en el foro de Oracle en Foros del Web. Hola, quiero hacer un procedimiento para optimizar el borrado de unas tablas, pero tienen llaves foraneas. Al momento de borrar un dato hace la verificación ...
  #1 (permalink)  
Antiguo 20/11/2008, 15:22
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años, 7 meses
Puntos: 2
Pregunta alter table con contrainst

Hola,

quiero hacer un procedimiento para optimizar el borrado de unas tablas, pero tienen llaves foraneas. Al momento de borrar un dato hace la verificación en las tablas que tienen las llaves que hace referencia.

mi duda.....

existe alguna instrucción como un disable all constraints?????

o hay que deshabilitarlas de a una y despues habilitarlas para hacer la consistencia.

gracias.
  #2 (permalink)  
Antiguo 21/11/2008, 07:02
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 1 mes
Puntos: 85
Respuesta: alter table con contrainst

La sentencia sql es

Código:
alter table <table_name> disable constraint <constraint_name>;
alter table <table_name> enable validate constraint <constraint_name>;
Primero debes deshabilitar las FKs, y luegos las PKs, y lo puedes hacer a través de un script consultando la vista user_constraints, preguntando por el campo constraint_type='P' o 'R'

Saludos
  #3 (permalink)  
Antiguo 21/11/2008, 07:26
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: alter table con contrainst

Cita:
...optimizar el borrado de unas tablas, pero tienen llaves foraneas...
No sé si en tu caso será válido pero yo siempre que puedo creo las foreign key con la cláusula ON DELETE CASCADE, de esta manera al eliminar un registro en la tabla a la que se hace referencia, automáticamente se eliminan todos los registros de la tabla que tiene la foreign key sin tener que hacer nada.

Un saludo.
  #4 (permalink)  
Antiguo 21/11/2008, 12:11
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: alter table con contrainst

gracias. además encontre este código.

begin
FOR cur IN (SELECT fk.owner, fk.constraint_name , fk.table_name
FROM all_constraints fk, all_constraints pk
WHERE fk.CONSTRAINT_TYPE = 'R' AND
pk.owner = '&which_owner' AND
fk.R_CONSTRAINT_NAME = pk.CONSTRAINT_NAME
AND pk.TABLE_NAME = '&which_table'
) loop
execute immediate 'ALTER TABLE '||cur.owner||'.'||cur.table_name||' MODIFY CONSTRAINT '||cur.constraint_name||' DISABLE';
end loop;
end;
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:55.