MySQL:建立依赖于外部字段的序列列
在数据库管理领域,有时必须修改现有的结构以适应新的数据需求。需要根据特定外键将序列号分配给记录时就是这种情况。
考虑一个包含 ID、ACCOUNT 和 some_other_stuff 列的表。目标是引入一个新列 SEQ,它针对每个不同的 ACCOUNT 值唯一递增,如下所示:
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 的解决方案:
MySQL触发器为我们提供了一种强大的机制,可以根据数据操作事件自动执行预定义的操作。在这种情况下,可以使用触发器在记录插入期间用适当的值填充 SEQ 列。触发器代码:
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;
细分:
以上是如何在MySQL中实现依赖于外键的序列列?的详细内容。更多信息请关注PHP中文网其他相关文章!