Postgres Update列,其中包含来自字符串

时间:2018-05-14 20:50:56

标签: postgresql enums migration

我正在构建迁移。将列从字符串更改为Enum-Type,并希望将保存的值作为Enum插入到表中,但不知道如何执行此操作。我将我的值插入到一个新表中,droped colum,使用枚举类型创建它,并且只获得新表中的字符串。该字符串与enum具有相同的文本。 代码是:

UPDATE event_participations
    SET kind = participations_migration.kind
    FROM participations_migration
    WHERE participations_migration.part_id = event_participations.id

Participations_type是枚举的名称,其值为“going”,“not_going”。现在我在participations_migration.kind中有字符串,并希望获取枚举值来更新event_participations.kind。

我需要一个subselect或join来根据在participations_migration.kind中设置的字符串更新带有枚举值的event_participations。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果文本与枚举成员文本相同,则枚举类型的强制转换就足够了。

    SET kind = participations_migration.kind::participations_type