-- -- Update for RSS support. -- aegrumet@alum.mit.edu -- -- Utility function lifted from one of the notification upgrade scripts... -- We might want to make this standard. -- added select define_function_args('safe_drop_constraint','table_name,constraint_name'); -- -- procedure safe_drop_constraint/2 -- CREATE OR REPLACE FUNCTION safe_drop_constraint( p_table_name name, p_constraint_name name ) RETURNS integer AS $$ DECLARE v_constraint_p integer; BEGIN select count(*) into v_constraint_p from pg_constraint con, pg_class c where con.conname = p_constraint_name and c.oid = con.conrelid and c.relname = p_table_name; if v_constraint_p > 0 then execute 'alter table ' || p_table_name || ' drop constraint ' || p_constraint_name; end if; return 0; END; $$ LANGUAGE plpgsql; -- Now drop the old constraint if defined (it might not be). select safe_drop_constraint('fs_rss_subscrs', 'fs_rss_subscrs_fk'); drop function safe_drop_constraint(name, name); -- Add the constraint with cascade. alter table fs_rss_subscrs add constraint fs_rss_subscrs_fk foreign key (subscr_id) references rss_gen_subscrs (subscr_id) on delete cascade;