Höchstwahrscheinlich laufen Sie in einen Namenskonflikt. Parameternamen (IN
und OUT
Parameter) sind (fast) überall im Funktionskörper sichtbar und haben Vorrang vor nicht qualifizierten Spaltennamen. Haben Sie col1
deklariert? als Variable in der Funktion?
Um den Konflikt zu vermeiden, table-qualifizieren der Spaltenname:
SELECT b.col1 FROM tableb b WHERE b.aID = NEW.ID;
Dies ist in jedem Fall eine gute Vorgehensweise.
Es empfiehlt sich auch, Variablennamen ein Präfix voranzustellen, damit sie normalerweise nicht mit Tabellenspalten in Konflikt geraten. Wie:_col1
.