On 07/19/2010 10:43 AM, Jennifer Trey wrote: > No.... I don't want to drop it ... there is valuable data in there! I > only want to create it if it doesn't already exist... likely going to > happen first time the application will run. I want to create the table > then and populate. But not the next time. Sorry -- didn't understand that from your original post. How 'bout something like: 8<--------------------- CREATE OR REPLACE FUNCTION conditional_create_table(schemaname text, tablename text, create_sql text, tbl_owner text) RETURNS text AS $$ DECLARE tbl_cnt int; fqtn text := schemaname || '.' || tablename; BEGIN SELECT COUNT(*) INTO tbl_cnt FROM information_schema.tables WHERE table_schema= schemaname AND table_name=tablename; IF tbl_cnt < 1 THEN EXECUTE 'CREATE TABLE ' || fqtn || create_sql; EXECUTE 'ALTER TABLE ' || fqtn || ' OWNER TO ' || tbl_owner; RETURN 'CREATE'; ELSE RETURN 'SKIP'; END IF; END $$ LANGUAGE plpgsql STRICT; SELECT conditional_create_table( 'public', 'post_codes', '(area character varying(10) NOT NULL, district character varying(10) NOT NULL, sector character varying(10) NOT NULL, CONSTRAINT post_codes_pkey PRIMARY KEY (area, district, sector) ) WITH (OIDS=FALSE)', 'postgres' ); conditional_create_table -------------------------- CREATE (1 row) SELECT conditional_create_table( 'public', 'post_codes', '(area character varying(10) NOT NULL, district character varying(10) NOT NULL, sector character varying(10) NOT NULL, CONSTRAINT post_codes_pkey PRIMARY KEY (area, district, sector) ) WITH (OIDS=FALSE)', 'postgres' ); conditional_create_table -------------------------- SKIP (1 row) contrib_regression=# \d public.post_codes Table "public.post_codes" Column | Type | Modifiers ----------+-----------------------+----------- area | character varying(10) | not null district | character varying(10) | not null sector | character varying(10) | not null Indexes: "post_codes_pkey" PRIMARY KEY, btree (area, district, sector) 8<--------------------- Joe -- Joe Conway credativ LLC: http://www.credativ.us Linux, PostgreSQL, and general Open Source Training, Service, Consulting, & 24x7 Support
Attachment:
signature.asc
Description: OpenPGP digital signature