MySQL エラー: ストアド関数/トリガーのテーブルを更新できません
質問:
トリガーを使用して MySQL テーブルに新しい行を挿入しようとすると、次のエラーが発生します発生:
Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
回答:
このエラーは、INSERT トリガーがそれを呼び出したテーブルを変更しようとすると発生します。 MySQL は、次の 2 つの主な理由によりこの動作を禁止しています:
このエラーを解決するには、次のアプローチの使用を検討してください。
たとえば、フルネームの最初の 2 文字から短縮名フィールドを作成するには、次の BEFORE INSERT トリガーを使用できます:
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
以上がMySQL ストアドファンクションまたはトリガー内のテーブルを更新できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。