INSERTトリガーの起動中は、テーブルを変更できません。 INSERTは、デッドロックを引き起こす可能性のあるロックを実行する可能性があります。また、トリガーからテーブルを更新すると、同じトリガーが無限再帰ループで再度起動します。これらの理由の両方が、MySQLがこれを実行できない理由です。
ただし、達成しようとしていることに応じて、NEW.fieldnameを使用して新しい値にアクセスできます。また、更新を実行している場合は、OLDを使用して古い値にアクセスすることもできます。
full_brand_name
という名前の行がある場合 small_name
フィールドの短い名前として最初の2文字を使用したいとしました。 使用できるもの:
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