如何在postgresql中创建字母数字序列

如何在postgresql中创建字母数字序列,postgresql,sequence,Postgresql,Sequence,我需要创建字母数字序列 示例:我有两张表,分别是city和student。 我希望城市的顺序像“城市1,城市2,城市3…”,学生的顺序像“学生1,学生2,学生3”等等 谢谢。您可以在插入触发器之前使用。此触发器可以从序列中获取一个数字并向其添加一个单词 另一个选项是在表格顶部使用一个简单的视图 UPD:使用自定义默认值,如default('city'| | nextval('city\u city\u id\u seq'))(来自pozs答案)比使用触发器要好。a不能是字母数字。事实上,您甚至不

我需要创建字母数字序列 示例:我有两张表,分别是city和student。 我希望城市的顺序像“城市1,城市2,城市3…”,学生的顺序像“学生1,学生2,学生3”等等


谢谢。

您可以在插入触发器之前使用
。此触发器可以从序列中获取一个数字并向其添加一个单词

另一个选项是在表格顶部使用一个简单的
视图

UPD:使用自定义默认值,如
default('city'| | nextval('city\u city\u id\u seq'))
(来自pozs答案)比使用触发器要好。

a不能是字母数字。事实上,您甚至不能在PostgreSQL中限制为较小的数字类型:它始终是
bigint

但是,
sequence
只是创建列的一部分,这类似于所谓的自动增量

PostgreSQL的伪类型
serial
的工作原理如下:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
要实现所需,只需定义自定义
DEFAULT
表达式,如:

CREATE SEQUENCE city_city_id_seq;
CREATE TABLE city (
    city_id text NOT NULL DEFAULT ('city' || nextval('city_city_id_seq'))
);
ALTER SEQUENCE city_city_id_seq OWNED BY city.city_id;

请通过编辑您的问题提供更多信息。你到底试过什么?为什么不起作用?这张桌子看起来像什么?非常感谢,非常好用