我想知道如何在PostgreSQL中实现类似于我在下表的"code"列中在SQL Server中所做的操作。
CREATE TABLE test(
id INT IDENTITY(1,1) NOT NULL,
code AS ('P' + RIGHT('0000' + CONVERT(VARCHAR, id), (4)))
);
我想知道如何在PostgreSQL中实现类似于我在下表的"code"列中在SQL Server中所做的操作。
CREATE TABLE test(
id INT IDENTITY(1,1) NOT NULL,
code AS ('P' + RIGHT('0000' + CONVERT(VARCHAR, id), (4)))
);
Postgres使用符合SQL标准的自增列。所以identity(1,1)
不能使用。
可以通过类似的方式创建生成的列。使用lpad()
函数可以在数字前面添加一定数量的零。
CREATE TABLE test
(
id INT generated always as identity not null,
code text generated always AS ('P'||lpad(id::text, 4, '0')) stored
);