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

时间:2015-03-25 13:37:30

标签: postgresql sequence

我需要创建字母数字序列 示例:我有2个表说城市和学生。     我希望城市的序列像“city1,city2,city3 ....”和“stud1,stud2,stud3”等学生

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用BEFORE INSERT触发器。此触发器可以从序列中获取一个数字并为其添加一个单词。

其他选项是在表格顶部使用简单的VIEW

UPD:使用自定义默认值DEFAULT ('city' || nextval('city_city_id_seq'))(来自pozs回答)比使用触发器更好。

答案 1 :(得分:4)

sequence不能是字母数字。事实上,你甚至无法限制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;