lo de ponerle la cantidad de posiciones al varchar realmente no genera un error de sintaxis, pero si es recomendado hacerlo.
te recomiendo hacer uso de otro juego de caracteres diferente a la comilla simple para empezar y terminar la ejecución de un trigger. Esto se puede hacer, pero debes saber cuando se abre o cierra una comilla cuando la requieras dentro del codigo como es el caso.
prueba esto y dinos si solucionas el problema.
Código sql:
Ver originalCREATE OR REPLACE FUNCTION test() RETURNS TRIGGER AS
$$
DECLARE
v_suc_codigo VARCHAR;
BEGIN
v_suc_codigo := 'valor_char';
INSERT INTO table2 (a) VALUES (v_suc_codigo);
RETURN NULL;
END
$$ LANGUAGE plpgsql VOLATILE
CREATE TRIGGER tri1 AFTER INSERT OR DELETE OR UPDATE ON table1
FOR EACH ROW EXECUTE PROCEDURE test();
saludos