完成第一个序列后,我需要将序列从2018AA000001增加到2018AA100000,然后应该从下一个序列2018AB000001开始到2018AB100000
在postgresql中使用触发器只能工作一个序列,但是我需要先实现2018AA然后实现2018AB,2018AC序列。
请建议我该怎么做。
谢谢, 维塔尔
答案 0 :(得分:0)
您可能可以利用此功能。也许有些人可以将其编辑成可以使用的序列。 这将输出您在描述中指定的结果。
discard temp;
我们将以此生成信件列表。
create temp table generate_letters as
select chr(i) as letter from generate_series(65,90) i;
letter -------- A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (26 rows)
并生成最多100000的数字。
create temp table generate_num as
select lpad(i::text,6,'0') as num from generate_series(1,100000) i;
select * from generate_num limit 10; num -------- 000001 000002 000003 000004 000005 000006 000007 000008 000009 000010 (10 rows)
然后我们只需要交叉加入即可。
select concat_ws('','2018',gl1.letter,gl2.letter,d.num) as seq
from generate_letters gl1
cross join generate_letters gl2
cross join generate_num d limit 100003;
seq -------------- 2018AA000001 2018AA000002 2018AA000003 2018AA000004 2018AA000005 2018AA000006 2018AA000007 2018AA000008 2018AA000009 ...skipping... 2018AA099997 2018AA099998 2018AA099999 2018AA100000 2018AB000001 2018AB000002