我正在尝试在Postgres数据库中为枚举类型添加新值,但该类型已被各种字段使用。 Postgres不允许我这样做,因为该类型已经在使用中。
之前我通过以下方式完成了这项工作:
在任何情况下都是一项重要工作,但如果在表格,视图和函数中数据库中使用了数十次类型,这是一项不可能完成的大任务。当然,只需添加一个新值到枚举类型就可以有更简单的方法吗?
非常感谢您的帮助。
答案 0 :(得分:1)
@a_horse_with_no_name涵盖了解决此问题的最佳方法。如果完整的重新架构不适合您的想象,您可以利用PostgreSQL对DDL和DML操作中的事务的支持。
理论上,您可以在单个事务操作中执行所有五个步骤。由于MVCC,您将能够安全地进行此更改,并对数据库用户产生最小的功能影响。您可能会产生巨大的磁盘开销(取决于表的大小)和大量的数据库膨胀(如果事务需要很长时间,真空过程将不会运行)。
所有这些都说,这是完全可行的。
答案 1 :(得分:0)
新的9.1版本将有一个简单的方法: http://developer.postgresql.org/pgdocs/postgres/sql-altertype.html