例子

CREATE TABLE transactions (
  id    SERIAL PRIMARY KEY,
  value NUMERIC NOT NULL
);

CREATE TABLE batches (
  id          SERIAL PRIMARY KEY,
  total_value NUMERIC NOT NULL
);

CREATE TABLE transaction_batches (
  id             SERIAL PRIMARY KEY,
  batch_id       INT NOT NULL REFERENCES batches (id) ON DELETE CASCADE ON UPDATE CASCADE,
  transaction_id INT NOT NULL REFERENCES transactions (id) ON DELETE CASCADE ON UPDATE CASCADE
);

transaction_batches表中,事务应按N个事务的批进行分组
用户可以随时删除或创建事务
如果用户更改了事务,则必须重新排列事务批(以确保20个事务的批)
目标
根据用户更改的每个事务,有效地将事务分组为N个事务
问题
你能提出一个实现目标的解决方案吗?
另外,你可以建议另一种表格结构

最佳答案

我只想:

CREATE TABLE transactions (
  id SERIAL PRIMARY KEY,
  value NUMERIC NOT NULL,
  batch_num INT NOT NULL
);

设置batch_num等于:
SELECT floor((row_number() over (order by id) - 1) / N)

你可以用扳机来做。或者,当查询表时,您可以简单地使用一个视图来计算这个值。

07-24 22:24
查看更多