Re: [SQL] Function to total reset a schema
I would hope you have readily at hand the ddl for the schema in question. Then it's simply a matter of drop schema name cascade and re-run you ddl scripts. Surfing wrote: Hi all, I need to write a function that totally empty a schema. So I have written a TRUNCATE statement for each table and set to 0 each sequence. Btw, it could be good to execute a vacuum statement on each table, but from within the function this is not allowed. Is there a way to obtain the same result in another way (without using the vacuum)? Thanks -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] Function to total reset a schema
On Sun, May 29, 2011 at 1:38 AM, Surfing onlinesurf...@gmail.com wrote: Hi all, I need to write a function that totally empty a schema. So I have written a TRUNCATE statement for each table and set to 0 each sequence. Btw, it could be good to execute a vacuum statement on each table, but from within the function this is not allowed. You shouldn't need to vacuum truncated tables, as they're basically at a lower level just wiped out and replaced by a new empty file / table. Same goes for the indexes I believe. -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] Function to total reset a schema
Surfing wrote on 29.05.2011 09:38: Hi all, I need to write a function that totally empty a schema. So I have written a TRUNCATE statement for each table and set to 0 each sequence. Btw, it could be good to execute a vacuum statement on each table, but from within the function this is not allowed. Is there a way to obtain the same result in another way (without using the vacuum)? If you are only using a single schema in your database, you could create an empty database with all your tables that you then use as the template database when creating a new one: Then each time you want to reset your schema (=database) you do a drop database real_database; create database real_database template template_database; Then you don't need to adjust your reset script if your database changes (you only maintain the template database using your SQL scripts) Thomas -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] Function to total reset a schema
I have two schemas, so I can't do that ... @ Scott. You are totally right ... I have just read this on the documentation: TRUNCATE quickly removes all rows from a set of tables. It has the same effect as an unqualified DELETE on each table, but since it does not actually scan the tables it is faster. Furthermore, it reclaims disk space immediately, rather than requiring a subsequent VACUUM operation. This is most useful on large tables. So the VACUUM should not really be necessary..thanks. Il 29/05/2011 09:54, Thomas Kellerer ha scritto: Surfing wrote on 29.05.2011 09:38: Hi all, I need to write a function that totally empty a schema. So I have written a TRUNCATE statement for each table and set to 0 each sequence. Btw, it could be good to execute a vacuum statement on each table, but from within the function this is not allowed. Is there a way to obtain the same result in another way (without using the vacuum)? If you are only using a single schema in your database, you could create an empty database with all your tables that you then use as the template database when creating a new one: Then each time you want to reset your schema (=database) you do a drop database real_database; create database real_database template template_database; Then you don't need to adjust your reset script if your database changes (you only maintain the template database using your SQL scripts) Thomas -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql