Thread: create table if does not exists
I try to have the following stored procedure, to help me create tables, if the table does not exists (Is this a good practiceby 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 MYTABLEis there. May I know how I can fix this? Thanks and Regards Yan Cheng CHEOK
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 practiceby 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 MYTABLEis 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/