例子
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)
你可以用扳机来做。或者,当查询表时,您可以简单地使用一个视图来计算这个值。