MySQL:根据外键生成序列列
在旧数据库中,添加一个序列列,记录每个外键的数字顺序key 可以增强数据检索和组织。假设您有下表:
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 表中的每个新行都会得到基于相关帐户的唯一序列号。
以上是如何在MySQL中根据外键生成序列列?的详细内容。更多信息请关注PHP中文网其他相关文章!