MySQL: 外部キーに基づいたシーケンス カラムの生成
レガシー データベースで、各外部キーの数値順序を記録するシーケンス カラムを追加するキーを使用すると、データの検索と整理が強化されます。次のテーブルがあるとします。
ID | ACCOUNT | some_other_stuff |
---|---|---|
1 | 1 | ... |
2 | 1 | ... |
3 | 1 | ... |
4 | 2 | ... |
5 | 2 | ... |
6 | 1 | ... |
目的は、ACCOUNT ごとに個別に増加する SEQ 列を作成することです。これにより、次のテーブルが作成されます。
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 トリガーを利用できます。
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;
このトリガーにより、mytable テーブルに挿入されたすべての新しい行が確実に取得されます。関連する ACCOUNT に基づく一意のシーケンス番号。
以上がMySQL で外部キーに基づいてシーケンス列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。