Не можете да промените таблица, докато спусъкът INSERT се задейства. INSERT може да извърши някакво заключване, което може да доведе до блокиране. Също така, актуализирането на таблицата от тригер ще доведе до повторно задействане на същия тригер в безкраен рекурсивен цикъл. И двете от тези причини са причината MySQL да ви пречи да направите това.
Въпреки това, в зависимост от това, което се опитвате да постигнете, можете да получите достъп до новите стойности, като използвате NEW.fieldname или дори старите стойности – ако правите АКТУАЛИЗИРАНЕ – със OLD.
Ако сте имали ред с име full_brand_name
и искахте да използвате първите две букви като кратко име в полето small_name
можете да използвате:
CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames`
FOR EACH ROW BEGIN
SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_name,1)) , LCASE(SUBSTRING(NEW.full_name,2)))
END