首页 > 解决方案 > 创建一个包含来自不同列的 2 个连接值的列的表?

问题描述

如何创建一个表,其中一列的值是来自同一个表中多个列的两个值的串联?

例如 - 表“用户”具有以下列 -
idnamelast_name

如何在Postgresql中创建此表,以便每次插入新行时,“ id ”列的值是通过连接“ name ”和“ last_name ”列值生成的?

在列上声明 DEFAULT 值时是否有这样的功能?

最终目标是使用 SqlAlchemy ORM 创建此表(当值将在 SQL 服务器中生成而不是在 sqlalchemy 框架中逻辑生成时)。

标签: sqlpostgresqlsqlalchemy

解决方案


Postgres 现在支持生成的列,因此您可以添加这样的列:

alter table users add full_name varchar(255) 
    generated always as (name || ' ' || last_name);

请注意,我没有其添加为 id,而是添加为新列。应该是一个数字,id以便它可以有效地用于索引和外键引用。

此外,您永远不应该将 PII 放入主键中。这只会在整个数据库中扩散隐私问题。


推荐阅读