Я пытаюсь получить функцию psql, которая усекает заданное имя таблицы, если оно существует. Я пробовал несколько функций, но ни одна из них не работала до сих пор. Вот код:
CREATE OR REPLACE FUNCTION truncateIfExists(tableName TEXT)
returns void
as $$
BEGIN
EXECUTE format(
'IF EXISTS (
SELECT *
FROM information_schema.tables
WHERE table_name =' || tableName || '
)
THEN
TRUNCATE tableName;
END IF;
');
END;
$$language plpgsql
Теперь я могу заставить его работать в простой процедуре с зашифрованным именем:
do $$
begin
IF EXISTS (SELECT *
FROM information_schema.tables
WHERE table_name = genre_epf)
THEN
TRUNCATE genre_epf;
END IF;
end
$$;
Но я не могу понять, как смешать оба запроса. Что я здесь не так делаю?
TRUNCATE tableName;
. Вы пытаетесьtableName