gpt4 book ai didi

database - 在特定日期执行自动化操作

转载 作者:行者123 更新时间:2023-11-29 13:32:48 25 4
gpt4 key购买 nike

这是我的环境:我的数据库保存了一些与选举相关的数据。每次选举都有开始时间和结束时间,在此期间人们可以投票给某人。

我想这样做,当结束时间到来时,数据库会计算投票数,并根据获得最多选票的用户自动在表上设置获胜者字段。必须将此事件添加到“选举”表中插入的每个新行,显然,每一行都有不同的结束时间。

是否可以创建一个在到达日期时间时唤醒的触发器?

最佳答案

你只能使用 cron 做这样的事情,pgAgent或类似的作业调度程序。

但您不必这样做。只需使用像这样的表格:

create table election_candidates (
election_id int not null references elections(election_id),
user_id int not null references users(user_id),
votes int not null default 0
);
create index election_candidates_election_id_votes_idx
on election_candidates(election_id, votes);

启动选举时,您创建 election_candidates 每个候选人都使用 fotes = 0 。当您收到选票时,您只需使用 update election_candidates set votes=votes+1 where election_id=?和 user_id=?。如果您需要记录投票而不是在另一个表中进行记录,然后使用触发器更新此表。

当您需要检查您刚刚使用的获胜者时:

with max_votes as (
select election_id, max(votes) as max_vote from election_candidates
where election_id=?
group by election_id
)
select user_id from election_candidates
natural inner join max_votes
where votes=max_vote;

但请记住,当不止一位候选人获得相同票数时,可能会有不止一位获胜者。

关于database - 在特定日期执行自动化操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19743446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com