ホームページ >データベース >mysql チュートリアル >トリガーを使用して MySQL でフィールド値をその ID に設定するにはどうすればよいですか?

トリガーを使用して MySQL でフィールド値をその ID に設定するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 14:29:03904ブラウズ

How Can I Set a Field Value to Its ID in MySQL Using a Trigger?

フィールド値を ID に設定する MySQL トリガー

MySQL では、フィールドを ID の値に直接更新することはできませんトリガーを使用して。これは、行の挿入、更新、または削除の前後、ただし自動インクリメント ID が生成される前にトリガーが実行されるためです。

目的の動作を実現するには、次の回避策を使用できます。

  1. 挿入された行ごとに group_id 列が null かどうかを確認するトリガーを作成します。
  2. null の場合は、group_id 列を id の値に設定します。
  3. BEFORE INSERT トリガー タイプ。自動インクリメント 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。