-- Deploy camper:add_campsite to pg -- requires: roles -- requires: schema_camper -- requires: campsite -- requires: campsite_type begin; set search_path to camper, public; drop function if exists add_campsite(integer, text, text, text); create or replace function add_campsite(campsite_type integer, label text) returns integer as $$ declare cid integer; begin insert into campsite (company_id, campsite_type_id, label) select company_id, campsite_type_id, label from campsite_type where campsite_type_id = add_campsite.campsite_type returning campsite_id into cid ; if cid is null then raise foreign_key_violation using message = 'insert or update on table "campsite" violates foreign key constraint "campsite_campsite_type_id_fkey"'; end if; return cid; end $$ language plpgsql ; revoke execute on function add_campsite(integer, text) from public; grant execute on function add_campsite(integer, text) to admin; commit;