フィールドを自動生成 ID の値にデフォルト設定する MySQL トリガー
MySQL では、特定の処理を実行するトリガーを作成できます。変更が発生する前または後のテーブル データに対する操作。一般的な使用例の 1 つは、挿入時に null のままになる場合に、フィールドを自動生成された主キー (ID) の値にデフォルト設定することです。
問題ステートメント:
これを実現するために、id (主キー)、group_id (整数)、および値 (varchar) の 3 つの列を持つテーブルを考えてみましょう。目的は、レコード挿入時に次の動作を行うことです。
トリガー実装:
この操作は単一のステートメントまたはトリガー内で実行することが望ましいですが、MySQL の制限によりそれができません。回避策の 1 つは、2 段階のアプローチを利用することです。
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
制限事項:
BEFORE INSERT トリガーは、新しく生成された ID 値がまだ割り当てられていないため、アクセスできないことに注意することが重要です。ただし、生成された値にアクセスするために AFTER INSERT トリガーを使用することは、そのフェーズでは列の値を変更できないため、オプションではありません。
したがって、上記の 2 段階のアプローチが、MySQL の望ましい動作に対する解決策を提供します。 .
以上がトリガーを使用して MySQL でフィールドをデフォルトの自動生成 ID に設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。