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í ?
postgresql
functions
Stanislasdrg reinstala a Monica
fuente
fuente
TRUNCATE tableName;
. Está intentando truncar una tabla llamadatableName
,Respuestas:
Utilice la variable ENCONTRADA :
Tenga en cuenta que he usado en
PERFORM
lugar de,SELECT
ya que no necesito una salida de la consulta. Quiero saber si la consulta devuelve alguna fila (FOUND = true
) o no (FOUND = false
).fuente