ホームページ >データベース >mysql チュートリアル >トリガーを使用して MySQL でフィールド値をその ID に設定するにはどうすればよいですか?
フィールド値を ID に設定する MySQL トリガー
MySQL では、フィールドを ID の値に直接更新することはできませんトリガーを使用して。これは、行の挿入、更新、または削除の前後、ただし自動インクリメント ID が生成される前にトリガーが実行されるためです。
目的の動作を実現するには、次の回避策を使用できます。
トリガーの MySQL ステートメントは次のとおりです:
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
残念ながら、このトリガーは機能しませんBEFORE INSERT フェーズでは自動生成された ID 値がまだ生成されていないため、望ましい動作が得られます。したがって、group_id が null の場合、デフォルトの NEW.id になり、常に 0 になります。
行の後に列の値を変更できないため、AFTER INSERT フェーズ中にトリガーを起動するように変更しても機能しません。が挿入されました。
唯一の解決策は、挿入を実行し、設定されていない場合は group_id 値をすぐに更新することです:
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
以上がトリガーを使用して MySQL でフィールド値をその ID に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。