Postgresql自定义字段默认值的格式

字段默认值一般填写一个固定值。

现在有个特殊需求是订单号字段,长度固定为10位,要求前5位为固定值 ,后5位是递增值。

可如下实现:

首先建一个序列:

CREATE SEQUENCE test_seq
    INCREMENT 1
    START 1
    MINVALUE 1
    MAXVALUE 99999
    CACHE 1;

然后建表,例如:

CREATE TABLE test
(
    test character varying(10) COLLATE pg_catalog."default" NOT NULL DEFAULT ('11111'::text || to_char(nextval('test_seq'::regclass), 'fm00000'::text)),
    sss integer,
    CONSTRAINT test_pkey PRIMARY KEY (test)
        USING INDEX TABLESPACE postgres
)

其中:

to_char第2个参数加'fm'表示按要求转换为固定长度的字符串且前面不留空格。

不过,订单号一般作为表的外键,还是用数字效率高,不建议用字符串,当然里面如果必须有非数字的字符的话另当别论。

ALTER TABLE test
    ADD COLUMN vvv bigint DEFAULT to_number(('11111'::text || to_char(nextval('test_seq'::regclass), 'fm00000'::text)), '9999999999'::text);

转换为数字保存。

执行插入数据,多插了几条:

insert into test(sss) values(1);

查询数据结果:

Postgresql自定义字段默认值的格式_第1张图片

你可能感兴趣的:(PostgreSQL实战,postgresql,数据库开发,字段默认值)