【问题标题】:How can I alter a column so that it has a generated constraint in postgres如何更改列以使其在 postgres 中具有生成的约束
【发布时间】:2021-05-23 17:50:00
【问题描述】:

我在 Postgres 中有一个包含以下列的表:

表定义:

名字 varchar(255)|姓氏 varchar(255)|全名 varchar(255)

我想要做的是像这样将以下生成的约束添加到 FullName 列 (FullName varchar(255) generated always as (FirstName || LastName) stored)。可用于使 FullName 成为生成列的正确 alter table 命令是什么?

一些上下文:我正在将一个数据库从 SQL Server 迁移到 Postgres,SQL Server 中的一个表有一个生成的列,定义如下 (ColumnName varchar(255) as (column1 + column2) persisted) Postgres 中的该列定义为 (ColumnName varchar(255) generated always as (column1 || column2) stored) 问题是,当我使用迁移工具迁移数据时,我遇到与正在生成的列相关的错误,所以我打算做的是创建没有生成的表约束然后将数据迁移到 postgres 表,之后使用 alter table 我将更改列以生成生成的约束

【问题讨论】:

    标签: sql sql-server postgresql database-migration generated-columns


    【解决方案1】:

    可用于使 FullName 成为生成列的正确 alter table 命令是什么?

    alter table the_table
      add fullname text generated always as (firstname || lastname) stored;
     
    

    完整的语法记录在in the manual

    Online example


    请注意,使用像 255 这样的“幻数”作为最大值没有存储或性能优势。一列的长度。 varchar(300)varchar(342) 一样有效。

    【讨论】:

    • 这没有回答问题。您的答案是添加生成的列,而问题要求将现有列转换为生成的列。
    猜你喜欢
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2022-10-14
    相关资源
    最近更新 更多