| PostgreSQL 8.4.17 Documentation | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
DROP TABLE removes tables from the database. Only its owner can drop a table. To empty a table of rows without destroying the table, use DELETE or TRUNCATE.
DROP TABLE always removes any indexes, rules, triggers, and constraints that exist for the target table. However, to drop a table that is referenced by a view or a foreign-key constraint of another table, CASCADE must be specified. (CASCADE will remove a dependent view entirely, but in the foreign-key case it will only remove the foreign-key constraint, not the other table entirely.)
Do not throw an error if the table does not exist. A notice is issued in this case.
The name (optionally schema-qualified) of the table to drop.
Automatically drop objects that depend on the table (such as views).
Refuse to drop the table if any objects depend on it. This is the default.
This definitely should be in the FAQ - to drop all tables (or grant privileges on them, etc) whose name matches a regexp/LIKE expression, one could use a similar construct to that (thanks, RhodiumToad!):
<RhodiumToad> create function exec(text) returns void language plpgsql as $f$ begin execute $1; end; $f$;
<RhodiumToad> select exec('drop table ' || quote_ident(schemaname) || '.' || quote_ident(tablename) || ' cascade') from pg_tables where schemaname like '...' and tablename like '...';