Re: A conditional DROP TABLE function
От | Peter Childs |
---|---|
Тема | Re: A conditional DROP TABLE function |
Дата | |
Msg-id | Pine.LNX.4.44.0309260916060.28513-100000@RedDragon.Childs обсуждение исходный текст |
Ответ на | A conditional DROP TABLE function (David Link <dvlink@yahoo.com>) |
Список | pgsql-general |
On Thu, 25 Sep 2003, David Link wrote: > Hi All, > > Here's a Conditional drop_table func for those interested. There was a > thread on this a long time back. > > We do this all the time : > > DELETE TABLE sales; > CREATE TABLE sales (...); > > But nobody likes > > ERROR: table "sales" does not exist Fine why not BEGIN; DELETE TABLE sales; CREATE TABLE sales (...); COMMIT; This is not the same as create or replace is mysql as it will delete all the data! This is also the same as DELETE FROM sales; The advantage of this is you keep the indexes. Peter Childs > > which we see all the time in the logs. I want to show the logs to none > db folk -- so we can't have those error messages in it. > > (There must be some explaination why postgresql (and Oracle as well) do > not have CREATE OR REPLACE TABLE as it does for VIEWs, and FUNCTIONs. > Anybody know?) > > Anyway here's drop_table (): > > > CREATE or REPLACE function drop_table (varchar) returns varchar as ' > DECLARE > tablename alias for $1; > cnt int4; > BEGIN > SELECT into cnt count(*) from pg_class where relname = > tablename::name; > if cnt > 0 then > execute \'DROP TABLE \' || tablename; > return tablename || \' DROPPED\'; > end if; > return tablename || \' does not exist\'; > END;' > language 'plpgsql' ; > > > And here's it's usage in an SQL script: > > \set QUIET > \pset format unaligned > \pset tuples_only > \unset QUIET > > select drop_table('sale'); > CREATE TABLE sale ( ... ); > > Regards, DAvid > > > __________________________________ > Do you Yahoo!? > The New Yahoo! Shopping - with improved product search > http://shopping.yahoo.com > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faqs/FAQ.html >
В списке pgsql-general по дате отправления: