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 サイトの他の関連記事を参照してください。