Během spouštění spouštěče INSERT nemůžete změnit tabulku. INSERT může provést určité zamykání, což by mohlo vést k uváznutí. Aktualizace tabulky ze spouštěče by také způsobila opětovné spouštění stejného spouštěče v nekonečné rekurzivní smyčce. Oba tyto důvody jsou důvodem, proč vám v tom MySQL brání.
V závislosti na tom, čeho se snažíte dosáhnout, můžete k novým hodnotám přistupovat pomocí NEW.fieldname nebo dokonce ke starým hodnotám – pokud provádíte UPDATE – pomocí OLD.
Pokud jste měli řádek s názvem full_brand_name
a chtěli jste použít první dvě písmena jako krátký název v poli small_name
můžete použít:
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