﻿CREATE OR REPLACE FUNCTION public.CreateMissingForeignKeys()
  RETURNS void AS
$BODY$
BEGIN


--===================
--VoiceRecordings
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'VoiceRecordings' and constraint_type = 'FOREIGN KEY' and constraint_name = 'voice_recordings_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'VoiceRecordings' and column_name = 'subscriber_id') then

ALTER TABLE public."VoiceRecordings"
  ADD CONSTRAINT voice_recordings_subscriber_fk FOREIGN KEY (subscriber_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : voice_recordings_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key voice_recordings_subscriber_fk already exists  between tables (VoiceRecordings, subscriber) !';	

end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'VoiceRecordings' and constraint_type = 'FOREIGN KEY' and constraint_name = 'voice_recordings_gateway_fk') 
   and exists (select * from information_schema.columns where table_name = 'VoiceRecordings' and column_name = 'gw_id') then

ALTER TABLE public."VoiceRecordings"
  ADD CONSTRAINT voice_recordings_gateway_fk FOREIGN KEY (gw_id)
      REFERENCES public.gateways ("ID") MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : voice_recordings_gateway_fk !';
else 
  RAISE NOTICE '%', 'Foreign key voice_recordings_gateway_fk already exists between tables (VoiceRecordings, gateways) !';	

end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'VoiceRecordings' and constraint_type = 'FOREIGN KEY' and constraint_name = 'voice_recordings_groups_fk') 
   and exists (select * from information_schema.columns where table_name = 'VoiceRecordings' and column_name = 'group_id') then

ALTER TABLE public."VoiceRecordings"
  ADD CONSTRAINT voice_recordings_groups_fk FOREIGN KEY (group_id)
      REFERENCES public.groups (id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : voice_recordings_groups_fk !';
else 
  RAISE NOTICE '%', 'Foreign key voice_recordings_groups_fk already exists  between tables (VoiceRecordings, groups) !';	

end if;

if NOT exists (select * from information_schema.table_constraints where table_name = 'VoiceRecordings' and constraint_type = 'FOREIGN KEY' and constraint_name = 'voice_recordings_dispatchers_fk') 
   and exists (select * from information_schema.columns where table_name = 'VoiceRecordings' and column_name = 'dispatcher_id') then

ALTER TABLE public."VoiceRecordings"
  ADD CONSTRAINT voice_recordings_dispatchers_fk FOREIGN KEY (dispatcher_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : voice_recordings_dispatchers_fk !';
else 
  RAISE NOTICE '%', 'Foreign key voice_recordings_dispatchers_fk already exists  between tables (VoiceRecordings, users) !';	

end if;


--===================
--alarm
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'alarm' and constraint_type = 'FOREIGN KEY' and constraint_name = 'alarm_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'alarm' and column_name = 'sc_id') then


ALTER TABLE public.alarm
  ADD CONSTRAINT alarm_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : alarm_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key alarm_subscriber_fk exists between tables (alarm, subscriber) !';	

end if;

--===================
--call_patch
--===================
if NOT exists (select * from information_schema.table_constraints where table_name = 'call_patch' and constraint_type = 'FOREIGN KEY' and constraint_name = 'call_patch_user_fk') 
   and exists (select * from information_schema.columns where table_name = 'call_patch' and column_name = 'userid') then

ALTER TABLE public.call_patch
  ADD CONSTRAINT call_patch_user_fk FOREIGN KEY (userid)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;
      
  RAISE NOTICE '%', 'Created foreign key : call_patch_user_fk !';
else 
  RAISE NOTICE '%', 'Foreign key call_patch_user_fk  exists between tables (call_patch, user) !';
end if;


--===================
--definesms
--===================



if NOT exists (select * from information_schema.table_constraints where table_name = 'definesms' and constraint_type = 'FOREIGN KEY' and constraint_name = 'definesms_user_fk') 
   and exists (select * from information_schema.columns where table_name = 'definesms' and column_name = 'user_id') then

if exists (select * from public.definesms where user_id = 0) then
 UPDATE public.definesms SET user_id = 1
 WHERE user_id = 0;
end if;

ALTER TABLE public.definesms
  ADD CONSTRAINT definesms_user_fk FOREIGN KEY (user_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : definesms_user_fk !';
else 
  RAISE NOTICE '%', 'Foreign key definesms_user_fk  exists between tables (definesms,  user) !';

end if;


--===================
--emergalarm
--===================
if NOT exists (select * from information_schema.table_constraints where table_name = 'emergalarm' and constraint_type = 'FOREIGN KEY' and constraint_name = 'emergalarm_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'emergalarm' and column_name = 'sc_id') then

ALTER TABLE public.emergalarm
  ADD CONSTRAINT emergalarm_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : emergalarm_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key emergalarm_subscriber_fk exists between tables (emergalarm,  subscriber)!';

end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'emergalarm' and constraint_type = 'FOREIGN KEY' and constraint_name = 'emergalarm_user_fk') 
   and exists (select * from information_schema.columns where table_name = 'emergalarm' and column_name = 'user_id') then

ALTER TABLE public.emergalarm
  ADD CONSTRAINT emergalarm_user_fk FOREIGN KEY (user_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : emergalarm_user_fk !';
else 
  RAISE NOTICE '%', 'Foreign key emergalarm_user_fk  exists between tables (emergalarm,  user) !';

end if;

--===================
--emergdi
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'emergdi' and constraint_type = 'FOREIGN KEY' and constraint_name = 'emergdi_subscriber_fk') 
    and exists (select * from information_schema.columns where table_name = 'emergdi' and column_name = 'sc_id') then 

ALTER TABLE public.emergdi
  ADD CONSTRAINT emergdi_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;


  RAISE NOTICE '%', 'Created foreign key : emergdi_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key emergdi_subscriber_fk exists between tables (emergdi,  subscriber) !';
      
end if;


--===================
--geozoneinout
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'geozoneinout' and constraint_type = 'FOREIGN KEY' and constraint_name = 'geozoneinout_user_fk') 
   and exists (select * from information_schema.columns where table_name = 'geozoneinout' and column_name = 'user_id') then 

ALTER TABLE public.geozoneinout
  ADD CONSTRAINT geozoneinout_user_fk FOREIGN KEY (user_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : geozoneinout_user_fk !';
else 
  RAISE NOTICE '%', 'Foreign key geozoneinout_user_fk exists between tables (geozoneinout,  user) !';      

end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'geozoneinout' and constraint_type = 'FOREIGN KEY' and constraint_name = 'geozoneinout_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'geozoneinout' and column_name = 'sc_id') then

ALTER TABLE public.geozoneinout
  ADD CONSTRAINT geozoneinout_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : geozoneinout_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key geozoneinout_subscriber_fk exists between tables (geozoneinout,  subscriber) !';       

end if;

--===================
--groups
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'groups' and constraint_type = 'FOREIGN KEY' and constraint_name = 'groups_radio_gw_fk') 
   and exists (select * from information_schema.columns where table_name = 'groups' and column_name = 'r_gw_id') then

ALTER TABLE public.groups
  ADD CONSTRAINT groups_radio_gw_fk FOREIGN KEY (r_gw_id)
      REFERENCES public.radio_gw ("ID") MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : groups_radio_gw_fk !';
else 
  RAISE NOTICE '%', 'Foreign key groups_radio_gw_fk exists between tables (groups,  radio_gw)!';

end if;


--===================
--jobtickets
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'jobtickets' and constraint_type = 'FOREIGN KEY' and constraint_name = 'jobtickets_subscriber_fk') 
    and exists (select * from information_schema.columns where table_name = 'jobtickets' and column_name = 'sc_id') then

ALTER TABLE public.jobtickets
  ADD CONSTRAINT jobtickets_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;


  RAISE NOTICE '%', 'Created foreign key : jobtickets_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key jobtickets_subscriber_fk exists between tables (jobtickets,  subscriber)!';      

end if;


--===================
--jobtickets_log
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'jobtickets_log' and constraint_type = 'FOREIGN KEY' and constraint_name = 'jobtickets_log_jobtickets_fk') 
   and exists (select * from information_schema.columns where table_name = 'jobtickets_log' and column_name = 'ticket_id') then

ALTER TABLE public.jobtickets_log
  ADD CONSTRAINT jobtickets_log_jobtickets_fk FOREIGN KEY (ticket_id)
      REFERENCES public.jobtickets (ticket_id) MATCH SIMPLE
      ON DELETE CASCADE;


  RAISE NOTICE '%', 'Created foreign key : jobtickets_log_jobtickets_fk !';
else 
  RAISE NOTICE '%', 'Foreign key jobtickets_log_jobtickets_fk exists between tables (jobtickets_log,  jobtickets)!'; 

end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'jobtickets_log' and constraint_type = 'FOREIGN KEY' and constraint_name = 'jobtickets_log_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'jobtickets_log' and column_name = 'sc_id') then

ALTER TABLE public.jobtickets_log
  ADD CONSTRAINT jobtickets_log_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;


  RAISE NOTICE '%', 'Created foreign key : jobtickets_log_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key jobtickets_log_subscriber_fk exists between tables (jobtickets_log,  subscriber)!';       

end if;

--===================
--messages
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'messages' and constraint_type = 'FOREIGN KEY' and constraint_name = 'messages_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'messages' and column_name = 'sc_id') then

ALTER TABLE public.messages
  ADD CONSTRAINT messages_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : messages_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key messages_subscriber_fk exists between tables (messages,  subscriber)!';       

end if;
--===================
--mobile_contacts
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'mobile_contacts' and constraint_type = 'FOREIGN KEY' and constraint_name = 'mobile_contacts_subscriber_dest_fk') 
   and exists (select * from information_schema.columns where table_name = 'mobile_contacts' and column_name = 'sc_id') then

ALTER TABLE public.mobile_contacts
  ADD CONSTRAINT mobile_contacts_subscriber_dest_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;
      
  RAISE NOTICE '%', 'Created foreign key : mobile_contacts_subscriber_dest_fk !';
else 
  RAISE NOTICE '%', 'Foreign key mobile_contacts_subscriber_dest_fk exists between tables (mobile_contacts,  subscriber)!'; 

end if;

--===================
--passenger
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'passenger' and constraint_type = 'FOREIGN KEY' and constraint_name = 'passenger_subscriber_dest_fk') 
   and exists (select * from information_schema.columns where table_name = 'passenger' and column_name = 'sc_id') then

ALTER TABLE public.passenger
  ADD CONSTRAINT passenger_subscriber_dest_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : passenger_subscriber_dest_fk !';
else 
  RAISE NOTICE '%', 'Foreign key passenger_subscriber_dest_fk exists between tables (passenger,  subscriber)!';       

end if;

--===================
--sms
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'sms' and constraint_type = 'FOREIGN KEY' and constraint_name = 'sms_user_fk') 
   and exists (select * from information_schema.columns where table_name = 'sms' and column_name = 'user_id') then
ALTER TABLE public.sms
  ADD CONSTRAINT sms_user_fk FOREIGN KEY (user_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : sms_user_fk !';
else 
  RAISE NOTICE '%', 'Foreign key sms_user_fk exists between tables (sms,  user)!';    

end if;

--if NOT exists (select * from information_schema.table_constraints where table_name = 'sms' and constraint_type = 'FOREIGN KEY' and constraint_name = 'sms_subscriber_source_fk') 
--   and exists (select * from information_schema.columns where table_name = 'sms' and column_name = 'sc_id_sour') then
--
--ALTER TABLE public.sms
--  ADD CONSTRAINT sms_subscriber_source_fk FOREIGN KEY (sc_id_sour)
--      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
--      ON DELETE CASCADE;
--
--  RAISE NOTICE '%', 'Created foreign key : sms_subscriber_source_fk !';
--else 
--  RAISE NOTICE '%', 'Foreign key sms_subscriber_source_fk exists between tables (sms,  subscriber)!';       
--
--end if;
--
--if NOT exists (select * from information_schema.table_constraints where table_name = 'sms' and constraint_type = 'FOREIGN KEY' and constraint_name = 'sms_subscriber_dest_fk') 
--   and exists (select * from information_schema.columns where table_name = 'sms' and column_name = 'sc_id_dest') then
--ALTER TABLE public.sms
--  ADD CONSTRAINT sms_subscriber_dest_fk FOREIGN KEY (sc_id_dest)
--      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
--      ON DELETE CASCADE;
--
--  RAISE NOTICE '%', 'Created foreign key : sms_subscriber_dest_fk !';
--else 
--  RAISE NOTICE '%', 'Foreign key sms_subscriber_dest_fk exists between tables (sms,  subscriber)!';        
--
--end if; 



--===================
--soundcards
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'soundcards' and constraint_type = 'FOREIGN KEY' and constraint_name = 'soundcards_user_fk') 
   and exists (select * from information_schema.columns where table_name = 'soundcards' and column_name = 'user_id') then

ALTER TABLE public.soundcards
  ADD CONSTRAINT soundcards_user_fk FOREIGN KEY (user_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : soundcards_user_fk !';
else 
  RAISE NOTICE '%', 'Foreign key soundcards_user_fk exists between tables (soundcards,  user)!';        

end if;

--===================
--speedalarm
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'speedalarm' and constraint_type = 'FOREIGN KEY' and constraint_name = 'speedalarm_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'speedalarm' and column_name = 'sc_id') then

ALTER TABLE public.speedalarm
  ADD CONSTRAINT speedalarm_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

 RAISE NOTICE '%', 'Created foreign key : speedalarm_subscriber_fk !';
else 
 RAISE NOTICE '%', 'Foreign key speedalarm_subscriber_fk exists between tables (speedalarm,  subscriber)!'; 

end if;

if NOT exists (select * from information_schema.table_constraints where table_name = 'speedalarm' and constraint_type = 'FOREIGN KEY' and constraint_name = 'speedalarm_user_fk') 
   and exists (select * from information_schema.columns where table_name = 'speedalarm' and column_name = 'user_id') then

ALTER TABLE public.speedalarm
  ADD CONSTRAINT speedalarm_user_fk FOREIGN KEY (user_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

 RAISE NOTICE '%', 'Created foreign key : speedalarm_user_fk !';
else 
 RAISE NOTICE '%', 'Foreign key speedalarm_user_fk exists between tables (speedalarm,  user)!'; 

end if;

--===================
--subs_gateway
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'subs_gateway' and constraint_type = 'FOREIGN KEY' and constraint_name = 'subs_gateway_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'subs_gateway' and column_name = 'sc_id') then

ALTER TABLE public.subs_gateway
  ADD CONSTRAINT subs_gateway_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

 RAISE NOTICE '%', 'Created foreign key : subs_gateway_subscriber_fk !';
else 
 RAISE NOTICE '%', 'Foreign key subs_gateway_subscriber_fk exists between tables (subs_gateway,  subscriber)!';       

end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'subs_gateway' and constraint_type = 'FOREIGN KEY' and constraint_name = 'subs_gateway_radio_gw_fk') 
   and exists (select * from information_schema.columns where table_name = 'subs_gateway' and column_name = 'radio_gw_id') then

ALTER TABLE public.subs_gateway
  ADD CONSTRAINT subs_gateway_radio_gw_fk FOREIGN KEY (radio_gw_id)
      REFERENCES public.radio_gw ("ID") MATCH SIMPLE
      ON DELETE CASCADE;
      
 RAISE NOTICE '%', 'Created foreign key : subs_gateway_radio_gw_fk !';
else 
 RAISE NOTICE '%', 'Foreign key subs_gateway_radio_gw_fk exists between tables (subs_gateway,  radio_gw)!';  
end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'subs_gateway' and constraint_type = 'FOREIGN KEY' and constraint_name = 'subs_gateway_gateways_fk') 
   and exists (select * from information_schema.columns where table_name = 'subs_gateway' and column_name = 'gateway_id') then

ALTER TABLE public.subs_gateway
  ADD CONSTRAINT subs_gateway_gateways_fk FOREIGN KEY (gateway_id)
      REFERENCES public.gateways ("ID") MATCH SIMPLE
      ON DELETE CASCADE;

 RAISE NOTICE '%', 'Created foreign key : subs_gateway_gateways_fk !';
else 
 RAISE NOTICE '%', 'Foreign key subs_gateway_gateways_fk exists between tables (subs_gateway,  gateways)!';  

end if;


--===================
--subscriber_history
--===================

if NOT exists (select * from information_schema.table_constraints where table_name = 'subscriber_history' and constraint_type = 'FOREIGN KEY' and constraint_name = 'subscriber_history_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'subscriber_history' and column_name = 'sc_id') then

ALTER TABLE public.subscriber_history
  ADD CONSTRAINT subscriber_history_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;
      
 RAISE NOTICE '%', 'Created foreign key : subscriber_history_subscriber_fk !';
else 
 RAISE NOTICE '%', 'Foreign key subscriber_history_subscriber_fk exists between tables (subscriber_history,  subscriber)!';      

end if;

if NOT exists (select * from information_schema.table_constraints where table_name = 'subscriber_history' and constraint_type = 'FOREIGN KEY' and constraint_name = 'subscriber_history_vehicle_fk') 
    and exists (select * from information_schema.columns where table_name = 'subscriber_history' and column_name = 'veh_id') then

ALTER TABLE public.subscriber_history
  ADD CONSTRAINT subscriber_history_vehicle_fk FOREIGN KEY (veh_id)
      REFERENCES public.vehicle (id) MATCH SIMPLE
      ON DELETE CASCADE;

   RAISE NOTICE '%', 'Created foreign key : subscriber_history_vehicle_fk !';
else 
   RAISE NOTICE '%', 'Foreign key subscriber_history_vehicle_fk exists between tables (subscriber_history,  vehicle)!';        

end if;

--================
--telemetry_pos
--================

if NOT exists (select * from information_schema.table_constraints where table_name = 'telemetry_pos' and constraint_type = 'FOREIGN KEY' and constraint_name = 'telemetry_pos_subscriber_fk') 
    and exists (select * from information_schema.columns where table_name = 'telemetry_pos' and column_name = 'sc_id') then

ALTER TABLE public.telemetry_pos
  ADD CONSTRAINT telemetry_pos_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : telemetry_pos_subscriber_fk !';
else 
   RAISE NOTICE '%', 'Foreign key telemetry_pos_subscriber_fk exists between tables (telemetry_pos,  subscriber)!';         

end if;

--================
-- users_radio
--================

if NOT exists (select * from information_schema.table_constraints where table_name = 'user_radio' and constraint_type = 'FOREIGN KEY' and constraint_name = 'user_radio_users_fk') 
   and exists (select * from information_schema.columns where table_name = 'user_radio' and column_name = 'user_id') then

ALTER TABLE public.user_radio
  ADD CONSTRAINT user_radio_users_fk FOREIGN KEY (user_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : users_radio_user_fk !';
else 
  RAISE NOTICE '%', 'Foreign key users_radio_user_fk exists between tables (user_radio,  users)!';         

end if;



if NOT exists (select * from information_schema.table_constraints where table_name = 'user_radio' and constraint_type = 'FOREIGN KEY' and constraint_name = 'user_radio_radio_gw_fk') 
   and exists (select * from information_schema.columns where table_name = 'user_radio' and column_name = 'radio_id') then

ALTER TABLE public.user_radio
  ADD CONSTRAINT user_radio_radio_gw_fk FOREIGN KEY (radio_id)
      REFERENCES public.radio_gw ("ID") MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : user_radio_radio_gw_fk !';
else 
  RAISE NOTICE '%', 'Foreign key user_radio_radio_gw_fk exists between tables (user_radio,  radio_gw)!';         

end if;

--================
-- users_group
--================

if NOT exists (select * from information_schema.table_constraints where table_name = 'users_group' and constraint_type = 'FOREIGN KEY' and constraint_name = 'users_group_user_fk') 
    and exists (select * from information_schema.columns where table_name = 'users_group' and column_name = 'userid') then

ALTER TABLE public.users_group
  ADD CONSTRAINT users_group_user_fk FOREIGN KEY (userid)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : users_group_user_fk !';
else 
  RAISE NOTICE '%', 'Foreign key users_group_user_fk exists between tables (users_group,  users)!';        

end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'users_group' and constraint_type = 'FOREIGN KEY' and constraint_name = 'users_group_groups_fk') 
    and exists (select * from information_schema.columns where table_name = 'users_group' and column_name = 'grp_id') then

ALTER TABLE public.users_group
  ADD CONSTRAINT users_group_groups_fk FOREIGN KEY (grp_id)
      REFERENCES public.groups (id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : users_group_groups_fk !';
else 
  RAISE NOTICE '%', 'Foreign key users_group_groups_fk exists between tables (users_group,  groups)!';       

end if;


--================
-- vehicle_group
--================


if NOT exists (select * from information_schema.table_constraints where table_name = 'vehicle_group' and constraint_type = 'FOREIGN KEY' and constraint_name = 'vehicle_group_subscriber_fk') 
   and exists (select * from information_schema.columns where table_name = 'vehicle_group' and column_name = 'sc_id') then

ALTER TABLE public.vehicle_group
  ADD CONSTRAINT vehicle_group_subscriber_fk FOREIGN KEY (sc_id)
      REFERENCES public.subscriber (sc_id) MATCH SIMPLE
      ON DELETE CASCADE;
      
  RAISE NOTICE '%', 'Created foreign key : vehicle_group_subscriber_fk !';
else 
  RAISE NOTICE '%', 'Foreign key vehicle_group_subscriber_fk exists between tables (vehicle_group,  subscriber)!';       

end if;



if NOT exists (select * from information_schema.table_constraints where table_name = 'vehicle_group' and constraint_type = 'FOREIGN KEY' and constraint_name = 'vehicle_group_groups_fk') 
   and exists (select * from information_schema.columns where table_name = 'vehicle_group' and column_name = 'grp_ip') then

ALTER TABLE public.vehicle_group
  ADD CONSTRAINT vehicle_group_groups_fk FOREIGN KEY (grp_ip)
      REFERENCES public.groups (id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : vehicle_group_groups_fk !';
else 
  RAISE NOTICE '%', 'Foreign key vehicle_group_groups_fk exists between tables (vehicle_group,  groups)!';         

end if;


--================
-- vehicle_user
--================

if NOT exists (select * from information_schema.table_constraints where table_name = 'vehicle_user' and constraint_type = 'FOREIGN KEY' and constraint_name = 'vehicle_user_users_fk') 
   and exists (select * from information_schema.columns where table_name = 'vehicle_user' and column_name = 'user_id') then

ALTER TABLE public.vehicle_user
  ADD CONSTRAINT vehicle_user_users_fk FOREIGN KEY (user_id)
      REFERENCES public.users (userid) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : vehicle_user_users_fk !';
else 
  RAISE NOTICE '%', 'Foreign key vehicle_user_users_fk exists between tables (vehicle_group, users)!';        

end if;


if NOT exists (select * from information_schema.table_constraints where table_name = 'vehicle_user' and constraint_type = 'FOREIGN KEY' and constraint_name = 'vehicle_user_vehicule_fk') 
   and exists (select * from information_schema.columns where table_name = 'vehicle_user' and column_name = 'veh_id') then

ALTER TABLE public.vehicle_user
  ADD CONSTRAINT vehicle_user_vehicule_fk FOREIGN KEY (veh_id)
      REFERENCES public.vehicle (id) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : vehicle_user_vehicule_fk !';
else 
  RAISE NOTICE '%', 'Foreign key vehicle_user_vehicule_fk exists between tables (vehicle_group, vehicle)!';  

end if;

--================
-- zonepoints
--================

if NOT exists (select * from information_schema.table_constraints where table_name = 'zonepoints' and constraint_type = 'FOREIGN KEY' and constraint_name = 'zonepoints_zone_fk') 
    and exists (select * from information_schema.columns where table_name = 'zonepoints' and column_name = 'zone_id') then

ALTER TABLE public.zonepoints
  ADD CONSTRAINT zonepoints_zone_fk FOREIGN KEY (zone_id)
      REFERENCES public.zonename (idx) MATCH SIMPLE
      ON DELETE CASCADE;

  RAISE NOTICE '%', 'Created foreign key : zonepoints_zone_fk !';
else 
  RAISE NOTICE '%', 'Foreign key zonepoints_zone_fk exists between tables (zonepoints, zonename)!';        

end if;


END;
$BODY$
  LANGUAGE plpgsql VOLATILE