¿Cómo puedo truncar toda la tabla de usuario en Oracle? Tengo un problema con las restricciones de tablas.¿Cómo truncar todas las tablas de usuario?
Respuesta
No hay necesidad para las variables
begin
for r in (select table_name from user_tables) loop
execute immediate 'truncate table ' || r.table_name;
end loop;
end;
Saludos K
declare
begin
for c1 in (select table_name, constraint_name from user_constraints) loop
begin
execute immediate ('alter table '||c1.table_name||' disable constraint '||c1.constraint_name);
end;
end loop;
for t1 in (select table_name from user_tables) loop
begin
execute immediate ('truncate table '||t1.table_name);
end;
end loop;
for c2 in (select table_name, constraint_name from user_constraints) loop
begin
execute immediate ('alter table '||c2.table_name||' enable constraint '||c2.constraint_name);
end;
end loop;
end;
/
Puede salida, a continuación, ejecutar el que más le guste:
set serveroutput on;
begin
for r in (select table_name from user_tables) loop
dbms_output.put_line('truncate table ' || r.table_name);
end loop;
end;
Mejora en caso de tener restricciones especiales que hacen que la secuencia de comandos anterior falle:
set serveroutput on;
declare
begin
for c1 in (select y.table_name, y.constraint_name from user_constraints y, user_tables x where x.table_name = y.table_name) loop
begin
dbms_output.put_line('alter table '||c1.table_name||' disable constraint '||c1.constraint_name || ';');
execute immediate ('alter table '||c1.table_name||' disable constraint '||c1.constraint_name);
end;
end loop;
for t1 in (select table_name from user_tables) loop
begin
execute immediate ('truncate table '||t1.table_name);
end;
end loop;
for c2 in (select table_name, constraint_name from user_constraints) loop
begin
execute immediate ('alter table '||c2.table_name||' enable constraint '||c2.constraint_name);
end;
end loop;
end;
/
lamentablemente las restricciones están 'restringidas' por orden. puede corregir la desactivación de las restricciones agregando 'cascade' al final del comando 'disable'. pero lo más probable es que no pueda automatizar la activación de las restricciones. – mmoossen
Se mejoró la secuencia de comandos anterior en caso de que no se pueda eliminar la restricción porque existen dependencias (en forma de claves foráneas que dependen de esta restricción - ORA-02297) e imprimiendo todas (deshabilitar, truncar y habilitar) declaraciones.
set serveroutput on;
declare
begin
for c1 in (select y1.table_name, y1.constraint_name from user_constraints y1, user_tables x1 where x1.table_name = y1.table_name order by y1.r_constraint_name nulls last) loop
begin
dbms_output.put_line('alter table '||c1.table_name||' disable constraint '||c1.constraint_name || ';');
execute immediate ('alter table '||c1.table_name||' disable constraint '||c1.constraint_name);
end;
end loop;
for t1 in (select table_name from user_tables) loop
begin
dbms_output.put_line('truncate table '||t1.table_name || ';');
execute immediate ('truncate table '||t1.table_name);
end;
end loop;
for c2 in (select y2.table_name, y2.constraint_name from user_constraints y2, user_tables x2 where x2.table_name = y2.table_name order by y2.r_constraint_name nulls first) loop
begin
dbms_output.put_line('alter table '||c2.table_name||' enable constraint '||c2.constraint_name || ';');
execute immediate ('alter table '||c2.table_name||' enable constraint '||c2.constraint_name);
end;
end loop;
end;
- 1. Rake para truncar todas las tablas en Rails 3
- 2. ¿La mejor manera de truncar todas las tablas con hibernación?
- 3. Truncar todas las tablas (la mayoría de las cuales tienen restricciones). Cómo colocarlos temporalmente
- 4. Seleccionar concesión en todas las tablas propiedad de usuario específico
- 5. Seleccionar de todas las tablas
- 6. JPA - Cómo truncar tablas entre pruebas unitarias
- 7. Psql enumera todas las tablas
- 8. Obtener todas las columnas de todas las tablas MySQL
- 9. MySQL OPTIMIZE todas las tablas?
- 10. Omitir todas las tablas comando
- 11. ORMLite restablecer todas las tablas
- 12. Reparar todas las tablas de una vez
- 13. Uso tablediff de comparar todas las tablas
- 14. Cómo mostrar todas las tablas de múltiples bases de datos
- 15. Establecer IDENTITY_INSERT OFF para todas las tablas
- 16. Listar todas las tablas en postgresql information_schema
- 17. ¿Cómo se eliminan todas las restricciones de clave externa en todas las tablas?
- 18. Cómo vaciar todas las filas de todas las tablas en mysql (en sql)
- 19. PHP PDO obtener todas las tablas
- 20. Buscar todas las tablas usando MySQL Workbench
- 21. Cómo agregar el prefijo de todas las tablas en mysql
- 22. Seleccionar todas las columnas de todas las tablas de SQL Server 2008
- 23. Seleccionar todas las columnas de todas las tablas de unirse a + LINQ unen
- 24. ¿Cómo fusiono dos tablas sin nombrar todas las columnas?
- 25. ¿Cómo se eliminan todas las tablas vacías en SQLite?
- 26. matar todas las conexiones de usuario en SQL Azure
- 27. Django: elimine todos los datos de todas las tablas (pero conserve las tablas)
- 28. Agregar una columna a todas las tablas de usuario en t-sql
- 29. Lista de todas las tablas en la base de datos
- 30. ¿Cómo puedo unir tres tablas con SQLalchemy y mantener todas las columnas en una de las tablas?
-1 No soluciona la necesidad de manejar restricciones – APC