我得到了一个表格,我允许相同的条目(重复,三元组等),但我每次都有一个列,我想要一个条目用这个条目存在多少次来更新。
所以我想写一个触发器,我已经可以通过
找到重复的条目了select count(pid) from items group by pid having count(*);
但问题是这个查询返回的orinal表(导致有很多重复)的列数较少
所以查询和表之间没有1比1的关系,所以我可以使用更新。我怎样才能修改它以获得所需的结果
先谢谢你。
答案 0 :(得分:1)
您将面临的主要问题是MySQL在修改items
表本身后,不允许您使用AFTER INSERT ...
触发器修改items
表(想一想)如何导致循环引用。)
一种解决方案是将计数完全存储在一个单独的表中(比如items_pid_info
)。该表的主键是pid
,这个表将由主项目表上的触发器更新。当您需要访问给定pidCount
的{{1}}时,只需加入此表格,您就可以获得给定pid的最新pid计数。因此:
pid
现在在create table items_pid_info
(pid int unsigned not null primary key,
pidCount int unsigned not null);
表格上创建INSERT
,UPDATE
和DELETE
个触发器来更新items
表:
items_pid_info
希望这有帮助。