Foo*_*Bar 5 postgresql partitioning sequence
是否有一种简单的(即非hacky)和无竞争条件的方法来在PostgreSQL中创建分区序列.例:
在问题中使用正常序列:
| Project_ID | Issue |
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 2 | 4 |
Run Code Online (Sandbox Code Playgroud)
在问题中使用分区序列:
| Project_ID | Issue |
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 2 | 2 |
Run Code Online (Sandbox Code Playgroud)
我不相信有一种简单的方法可以像常规序列一样简单,因为:
nextval('myseq')
; 但它无法引用其他列来通知函数该值应来自哪个流。你可以做出一些有用的东西,但你可能不会认为它很简单。依次解决上述问题:
multiseq (partition_id, next_val)
.编写一个multinextval(seq_table, partition_id)
执行如下操作的函数:
seq_table
。partition_id
使用递增的值更新分区 id 所在的行。(或者如果没有现有行,则插入值为 2 的新行。)在项目表上创建一个插入触发器,使用调用来multinextval('projects_table', NEW.Project_ID)
进行插入。
我自己没有使用整个计划,但我单独尝试了与每个步骤类似的方法。multinextval
如果您想尝试此操作,可以提供函数和触发器的示例...
归档时间: |
|
查看次数: |
2400 次 |
最近记录: |