Get id von INSERT oder SELECT

Ich habe diese Funktion, die eine Zeile in ein @ fücity Tabelle ohne Duplikate. Es gibt die ID der eingefügten Zeile zurück:

CREATE OR REPLACE FUNCTION public.insert_city(
character varying,
character varying,
character varying,
character varying,
character varying,
character varying)
RETURNS integer AS
$BODY$
DECLARE
name_city1 ALIAS FOR $1;
country1 ALIAS FOR $2;
province1 ALIAS FOR $3;
region1 ALIAS FOR $4;
cap1 ALIAS FOR $5;
nationality1 ALIAS FOR $6;
id_city1 integer;
BEGIN
   INSERT INTO city (name_city, country, province, region, cap, nationality) 
   SELECT name_city1, country1, province1, region1, cap1, nationality1
WHERE NOT EXISTS (SELECT id_city FROM city WHERE name_city = name_city1)
RETURNING id_city INTO id_city1;

-- xxx

END;
$BODY$
LANGUAGE plpgsql VOLATILE;

xxx markiert die Stelle, an der ich etwas brauche:

IF is_number(id_city1) THEN
    RETURN id_city1;
ELSE
RETURN query select id_city from city where name_city=name_city1;
END IF;

Wenn die erste Abfrage keine neue Zeile einfügt und ich kein @ erhalid_city davon möchte ich die zweite Abfrage ausführen, um ein vorhandenes @ auszuwählid_city.

Wie kann ich das machen

Antworten auf die Frage(6)

Ihre Antwort auf die Frage