Sto cercando di ottenere una funzione psql che troncerebbe un determinato nome di tabella se esiste. Ho provato più funzioni, ma nessuna di queste ha funzionato finora. Ecco il codice:
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
Ora sono in grado di farlo funzionare in una semplice procedura con un nome codificato:
do $$
begin
IF EXISTS (SELECT *
FROM information_schema.tables
WHERE table_name = genre_epf)
THEN
TRUNCATE genre_epf;
END IF;
end
$$;
Ma non riesco a capire come mescolare entrambe le domande. Cosa sto facendo di sbagliato qui?
TRUNCATE tableName;. Stai cercando di troncare un tavolo chiamatotableName,