MySQL で外部キー値に基づいて順次列を自動的に生成する方法

Susan Sarandon
リリース: 2024-11-14 18:20:02
オリジナル
325 人が閲覧しました

How to Automatically Generate Sequential Columns in MySQL Based on Foreign Key Values?

MySQL でのシーケンスベースのカラムの作成

従来のデータベース システムでは、追加情報を追跡するために新しいカラムを追加することが必要になることがよくあります。この情報が特定のレコードに対して連続している必要がある場合、SQL トリガーは効率的な解決策を提供します。

ターゲット: 外部 ID に基づいてシーケンス列を追加

次のようなデータを含むテーブル:

ID     ACCOUNT     some_other_stuff
1      1           ...
2      1           ...
3      1           ...
4      2           ...
5      2           ...
6      1           ...
ログイン後にコピー

そして、「アカウント」ごとに個別に増加する「sequenceid」列を追加すると、次のようになります。

ID     ACCOUNT     SEQ     some_other_stuff
1      1           1       ...
2      1           2       ...
3      1           3       ...
4      2           1       ...
5      2           2       ...
6      1           4       ...
ログイン後にコピー

解決策: SQL トリガーの使用

SQL でこれを自動的に実現するには、テーブルに対する各 INSERT 操作の前に起動するトリガーを作成できます。

CREATE TRIGGER trg_mytable_bi
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
      DECLARE nseq INT;
      SELECT  COALESCE(MAX(seq), 0) + 1
      INTO    nseq
      FROM    mytable
      WHERE   account = NEW.account;
      SET NEW.seq = nseq;
END;
ログイン後にコピー

このトリガーはローカル変数 ' を初期化します。 nseq' は、次の連続した値を保持します。テーブルをクエリして現在の「アカウント」の既存の最大シーケンス番号を見つけ、1 を加算して次のシーケンス値を生成します。この値は、新しく挿入された行の「seq」値として設定されます。

トリガーを使用すると、シーケンス番号が自動的に生成され、挿入プロセス中に増分され、各アカウントが独自の一意のシーケンスを持つようになります。数字の。このアプローチにより、シーケンスを維持するための手動更新や複雑な PHP スクリプトの必要がなくなります。

以上がMySQL で外部キー値に基づいて順次列を自動的に生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート