我需要基于特定列创建自定义序列,作为前缀添加。我知道可以自定义序列以及 nextval,但我不确定是否可以使用特定表的列。
这是包含基本信息的表结构:
create table tab
(
id serial not null
constraint tab_pkey primary key,
year varchar(4) not null,
seq varchar(20) not null
);
create sequence tab_id_seq as integer;
我想根据以下格式自动填充“seq”列,就像正常序列一样:
{year}_{sequence}
其中{year}_是前缀,而{sequence}是一个渐进式,每年从 1 开始。
DESIRED RESULT
|--------|----------|---------|
| id | year | seq |
|--------|----------|---------|
| 10 | 2019 | 2019_1 |
|--------|----------|---------|
| 11 | 2019 | 2019_2 |
|--------|----------|---------|
| 12 | 2019 | 2019_3 |
|--------|----------|---------|
| 13 | 2019 | 2019_4 |
|--------|----------|---------|
| 14 | 2020 | 2020_1 | <--- sequence restarting
|--------|----------|---------|
| 15 | 2020 | 2020_2 |
|--------|----------|---------|
| 16 | 2020 | 2020_3 |
|--------|----------|---------|
注意id列和{sequence}元素之间没有直接关系