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;
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;
how to enable them back..??
The most simple way is to use “ENABLE” command:
'ALTER TABLE '||cur.owner||'.'||cur.table_name||
' MODIFY CONSTRAINT '||cur.constraint_name||' ENABLE';
However, it’s even better to build the list of the constraints BEFORE:
FROM
(
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'
) cur;