1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| SELECT * FROM scott.dept;
BEGIN
DBMS_REDEFINITION.CAN_REDEF_TABLE('SCOTT','DEPT', dbms_redefinition.cons_use_pk);
END;
/
CREATE TABLE scott.dept_int
AS SELECT deptno, dname, loc emplacement, 0 AS effectif FROM scott.dept
where 0=1;
-- On ajoute le suffixe _DUP au nom de département lors du transfert des données
BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE(
'scott', 'dept','dept_int', 'deptno deptno, dname||''_DUP'' dname, loc emplacement', dbms_redefinition.cons_use_pk);
END;
/
-- Si jamais on doit annuler l'opération
--> exec dbms_redefinition.abort_redef_table('SCOTT', 'DEPT', 'DEPT_INT');
-- Transfert des objets dépendants
DECLARE
num_errors PLS_INTEGER;
BEGIN
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('SCOTT', 'DEPT','DEPT_INT', DBMS_REDEFINITION.CONS_ORIG_PARAMS, TRUE, TRUE, TRUE, TRUE, num_errors);
dbms_output.put_line(num_errors);
END;
/
-- Vérification du bon déroulement
select object_name, base_table_name, ddl_txt from DBA_REDEFINITION_ERRORS;
BEGIN
DBMS_REDEFINITION.SYNC_INTERIM_TABLE('SCOTT','dept', 'dept_int');
END;
/
BEGIN
DBMS_REDEFINITION.FINISH_REDEF_TABLE('SCOTT','dept', 'dept_int');
END;
/
select * from scott.dept;
-- suppression de la table intermédiaire
DROP TABLE scott.dept_int
cascade constraints; |