首页 > 解决方案 > PostgreSQL 重命名表 - 级联重命名为索引等对象,包含表名的约束

问题描述

我重命名了我的表ALTER TABLE _ RENAME TO _

ALTER TABLE foods RENAME TO food;
ALTER TABLE foods_nutrients RENAME TO food_nutrient;

它有效,但是包含这些表名的其他数据库对象(如索引、序列和约束)没有更新。所以我不得不像这样手动更新它们:

ALTER INDEX foods_pkey RENAME TO food_pkey;
ALTER SEQUENCE foods_id_seq RENAME TO food_id_seq;
ALTER TABLE food_nutrient RENAME CONSTRAINT foods_nutrients_food_id_fkey TO food_nutrient_food_id_fkey;

没有必要重命名它们,但不这样做感觉不对。我想知道是否有自动执行此操作的命令。或者重命名包含旧表名的所有对象不是很常见吗?

标签: postgresql

解决方案


索引、序列等的名称与任何表名称之间没有技术关系。所以没有可靠的方法来自动重命名它们。

您可以编写一个脚本来遍历架构并通过搜索和替换重命名事物,但这会带来误报的风险。


推荐阅读