могу ли я создать серийный номер, использовать конфликт вставки, не нужно SEQUENCE?
это моя таблица:
CREATE TABLE web.flow_no
(
apply_kind character varying(15) COLLATE pg_catalog."default" NOT NULL,
seq_name character varying(10) COLLATE pg_catalog."default" NOT NULL,
seq_no numeric(8,0) NOT NULL DEFAULT 1,
CONSTRAINT flow_no_pk PRIMARY KEY (apply_kind, seq_name)
)
, но Sql не в порядке: 1:
insert into web.flow_no(apply_kind,seq_name)values('ISO_FILE','202003')
ON CONFLICT(apply_kind, seq_name)
DO UPDATE SET seq_no=EXCLUDED.seq_no+1
RETURNING seq_no
всегда get 2
2:
insert into web.flow_no(apply_kind,seq_name)values('ISO_FILE','202003')
ON CONFLICT(apply_kind, seq_name)
DO UPDATE SET seq_no=
(select seq_no from web.flow_no where apply_kind=EXCLUDED.apply_kind and
seq_name=EXCLUDED.seq_name)+1
RETURNING seq_no
не является потокобезопасным (ATOM): множественный запрос, возвращающий seq_no, будет конфликтовать