Обсуждение: Conditional test

Поиск
Список
Период
Сортировка

Conditional test

От
rickd@open-works.com (Rick Dayao)
Дата:
I am trying to solve this problem:

If a table exists, drop the table, otherwise continue processing.

For example, if table X exists, then drop table X.  How would I do
this in SQL?  I can query the pg_tables table to see which tables
exist, but I'm looking for an If-Else construct in SQL.

Thanks in advance,

Rick


Re: Conditional test

От
Bruce Momjian
Дата:
Rick Dayao wrote:
> I am trying to solve this problem:
> 
> If a table exists, drop the table, otherwise continue processing.
> 
> For example, if table X exists, then drop table X.  How would I do
> this in SQL?  I can query the pg_tables table to see which tables
> exist, but I'm looking for an If-Else construct in SQL.

You can drop the table and ignore the error if returned.  We will have
CREATE OR REPLACE in 7.2, but no conditional DROP.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: Conditional test

От
"steve boyle"
Дата:
Rick, try the following plpgsql function it should do what you need:

create function f_dropTableIfExists (text) returns boolean as '   declare       p_tablename alias for $1;
temp_nametext;   begin       select tablename from pg_tables into temp_name where tablename =
 
p_tablename;       if not found then           raise notice ''Table % not found.'', p_tablename;           return
false;      else           execute ''drop table '' ||  p_tablename;           raise notice ''Table % dropped.'',
p_tablename;          return true;       end if;   end ; '
 
language 'plpgsql';

you will need to 'Select f_dropTableIfExists([TableName]);' to execute the
function.

FAIK the main difference carrying out the operation this way rather than
just DROP TABLE  is to avoid an ERROR being raised if the object does not
exist.

Hih

Steve Boyle

PS. If anyone knows a better way of doing this pls post

"Rick Dayao" <rickd@open-works.com> wrote in message
news:4eee2f8d.0112271854.276c1152@posting.google.com...
> I am trying to solve this problem:
>
> If a table exists, drop the table, otherwise continue processing.
>
> For example, if table X exists, then drop table X.  How would I do
> this in SQL?  I can query the pg_tables table to see which tables
> exist, but I'm looking for an If-Else construct in SQL.
>
> Thanks in advance,
>
> Rick