U kunt geen tafel wijzigen terwijl de INSERT-trigger geactiveerd is. De INSERT kan enige vergrendeling uitvoeren, wat kan resulteren in een impasse. Ook zou het bijwerken van de tabel vanuit een trigger ervoor zorgen dat dezelfde trigger opnieuw wordt geactiveerd in een oneindige recursieve lus. Beide redenen zijn waarom MySQL u ervan weerhoudt dit te doen.
Afhankelijk van wat u probeert te bereiken, kunt u echter toegang krijgen tot de nieuwe waarden door NEW.fieldname te gebruiken of zelfs de oude waarden - als u een UPDATE doet - met OLD.
Als je een rij had met de naam full_brand_name
en je wilde de eerste twee letters gebruiken als korte naam in het veld small_name
je zou kunnen gebruiken:
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