sql - 创建一个包含来自不同列的 2 个连接值的列的表?
问题描述
如何创建一个表,其中一列的值是来自同一个表中多个列的两个值的串联?
例如 - 表“用户”具有以下列 -
id、name、last_name
如何在Postgresql中创建此表,以便每次插入新行时,“ id ”列的值是通过连接“ name ”和“ last_name ”列值生成的?
在列上声明 DEFAULT 值时是否有这样的功能?
最终目标是使用 SqlAlchemy ORM 创建此表(当值将在 SQL 服务器中生成而不是在 sqlalchemy 框架中逻辑生成时)。
解决方案
Postgres 现在支持生成的列,因此您可以添加这样的列:
alter table users add full_name varchar(255)
generated always as (name || ' ' || last_name);
请注意,我没有将其添加为 id,而是添加为新列。应该是一个数字,id
以便它可以有效地用于索引和外键引用。
此外,您永远不应该将 PII 放入主键中。这只会在整个数据库中扩散隐私问题。
推荐阅读
- amazon-web-services - 有没有办法将日志从 cloudwatch 获取到 graylog?
- regex - 如何查找和标准化章节和页面参考的拼写 (Adobe InDesign)?
- php - 从ajax成功请求将数据插入数据库
- powershell - 使用 Visual Studio Code 比较两个字符串?
- php - 尝试指向新域时出现问题
- javascript - addEventListener 在使用 XMLHttpRequest 更新元素后停止侦听
- python - 如何在 np.linalg.inv 函数的奇异矩阵上传递引发的错误?
- c# - 方法声明中的变量= null?这是什么意思以及如何调用此方法?
- spring-boot - Spring Boot + Spring Security Oauth2 失败处理程序没有被调用
- javascript - 从没有父级的 insertAdjacentHTML 文本中获取顶级 DOM 节点