create table if does not exists

Started by Yan Cheng Cheokover 16 years ago2 messagesgeneral
Jump to latest
#1Yan Cheng Cheok
yccheok@yahoo.com

I try to have the following stored procedure, to help me create tables, if the table does not exists (Is this a good practice by the way?)

if not exists(select * from information_schema.tables where table_name = 'MYTABLE') then

RAISE NOTICE 'table not there yet.';

CREATE TABLE MYTABLE
(
"value" text NOT NULL
);

end if;

When I run for the 2nd time, 'table not there yet.' still being printed out, al though I check through pgadmin, the MYTABLE is there.

May I know how I can fix this?

Thanks and Regards
Yan Cheng CHEOK

#2Chris
dmagick@gmail.com
In reply to: Yan Cheng Cheok (#1)
Re: create table if does not exists

Yan Cheng Cheok wrote:

I try to have the following stored procedure, to help me create tables, if the table does not exists (Is this a good practice by the way?)

if not exists(select * from information_schema.tables where table_name = 'MYTABLE') then

RAISE NOTICE 'table not there yet.';

CREATE TABLE MYTABLE
(
"value" text NOT NULL
);

end if;

When I run for the 2nd time, 'table not there yet.' still being printed out, al though I check through pgadmin, the MYTABLE is there.

May I know how I can fix this?

The table will be named "mytable" rather than 'MYTABLE'.

Postgres lowercases names (tables, fields etc) unless you put them in
quotes ("LikeThis") - but then you always have to quote them like that.

If you change your check to be

where table_name='mytable'

it should get picked up correctly.

--
Postgresql & php tutorials
http://www.designmagick.com/