Estoy tratando de obtener una función psql que truncaría un nombre de tabla dado si existe. He estado probando múltiples funciones, pero ninguna de ellas funcionó hasta ahora. Aquí está el código:
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
Ahora, puedo hacer que funcione en un procedimiento simple con un nombre codificado:
do $$
begin
IF EXISTS (SELECT *
FROM information_schema.tables
WHERE table_name = genre_epf)
THEN
TRUNCATE genre_epf;
END IF;
end
$$;
Pero no puedo entender cómo mezclar ambas consultas. Qué estoy haciendo mal aquí ?
TRUNCATE tableName;
. Está intentando truncar una tabla llamadatableName
,