Muito provavelmente você está enfrentando um conflito de nomenclatura. Nomes de parâmetros (
IN
e OUT
parâmetros) são visíveis no corpo da função (quase) em qualquer lugar e têm precedência sobre nomes de coluna não qualificados. Você declarou col1
como variável na função? Para evitar o conflito, qualificação de tabela o nome da coluna:
SELECT b.col1 FROM tableb b WHERE b.aID = NEW.ID;
Esta é uma boa prática em qualquer caso.
Também é uma boa prática prefixar nomes de variáveis, para que normalmente não entrem em conflito com as colunas da tabela. Como:
_col1
.