1

重複の可能性:
挿入後および更新後の MySQL トリガー

たとえば、次のテーブルがあります。プラットフォーム | 名前 | バージョン | フルネーム

挿入または更新があるときに、「Type.Platform.Name.Version」で FullName を更新したい。

CONCAT_WS('.', Type,Platform,Name,Version) は必要なデータを提供すると思っていましたが、それを FullName フィールドに入れるにはどうすればよいですか?

トリガーを調べましたが、データが存在するのと同じテーブルを更新するために機能しません。ストア プロシージャを自動化する方法がわかりませんでしたが、おそらくそれらを完全に理解していません。

おそらく、トリガーされる可能性のある FullName フィールドのみを含むテーブルでしょうか? どんな洞察も大歓迎です!

4

3 に答える 3

3

BEFORE INSERT および BEFORE UPDATE トリガーを実行できます。

CREATE TRIGGER fullname_update BEFORE UPDATE ON table
  FOR EACH ROW BEGIN
    SET NEW.fullname = CONCAT_WS('.', NEW.type, NEW.platform, NEW.name, NEW.version);
  END;

BEFORE INSERT トリガーについても同じことができます。それが役立つことを願っています。

于 2012-12-30T04:34:53.710 に答える
0

特定のバージョンの MySQL にこだわっていない場合は、「仮想列」をサポートするMariaDBを検討することをお勧めします。これはあなたが抱えている問題を解決するでしょう。

MariaDB は MySQL のフォークであるため、標準の MySQL 機能をすべて利用できます。

于 2012-12-30T04:32:10.363 に答える
0

あなたの解決策はMySQL ビューです。

実際のデータを含むテーブルと、通常のテーブルとして使用できる「ビュー」と呼ばれるエンティティがあり、そこからリクエストを作成したり、更新したりできます。あなたが尋ねるなら、あなたはそれらを探るべきです。

もちろん、用途には制限がありますが、ご質問のとおり、ニーズに合っていると思います。

于 2012-12-30T04:51:30.953 に答える