MySQL エラー: ストアド ファンクション/トリガー内での更新は禁止されています
MySQL ストアド ファンクションまたはトリガー内のテーブルを更新しようとすると、エラーが発生しました:
Error: Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
エラー
このエラーは、INSERT トリガーの実行中にテーブルを変更することを禁止する MySQL の制限に起因します。このような変更を行うと、デッドロックや無限再帰ループが発生する可能性があります。
エラーの回避
このエラーを回避するには、次のアプローチを検討してください。
新しいものと古いものを使用するフィールド:
トリガー コンテキストを変更します:
BEFORE INSERT トリガーの使用例:
full_brand_name フィールドがあり、次の内容を含む short_name フィールドを作成する必要があるとします。最初の 2 文字は大文字:
CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames` FOR EACH ROW BEGIN SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_brand_name,1)) , LCASE(SUBSTRING(NEW.full_brand_name,2))) END
以上がMySQL ストアドファンクションまたはトリガー内のテーブルを更新できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。