在 Postrges 中,我知道如何创建一个表,其中的列具有序列(数字)id:
CREATE TABLE Tag (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL
);
不过,我更喜欢让我的 ID 具有人类可读的一面。我通常会执行类似 tag_1, tag_2, tag_3
usr_1, usr_2, usr_3
的操作。
我已经看过有关如何生成 uuid ( Generating a UUID in Postgres for Insert statement? ) 的说明,但我并不真正需要它。基本序列号已经足够了,我只想在开头添加前缀 tag_
。
如何创建带有公共(public)前缀的序列号?
最佳答案
您可以使用一个序列来做到这一点,您可以将其作为通过 ||
连接的默认值添加到表中。使用您想要的前缀,例如
CREATE SEQUENCE tag_seq START WITH 1;
CREATE TABLE tag
(id TEXT NOT NULL DEFAULT 'tag_'||nextval('tag_seq'::regclass),
name TEXT);
INSERT INTO tag (name) VALUES ('foo'),('bar');
SELECT * FROM tag;
id | name
-------+------
tag_1 | foo
tag_2 | bar
(2 Zeilen)
演示: db<>fiddle
关于sql - 如何在 Postgres 中创建带有公共(public)前缀(即 tag_1、tag_2、tag_3)的字符串的序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62400011/