PostgreSQL重命名表 - 级联重命名包含表名的对象,如索引、约束

3

我使用 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;

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

1个回答

3

索引、序列等名称与任何表名之间没有技术关联,因此没有可靠的自动重命名方法。

您可以编写一个脚本,通过搜索和替换来遍历模式并重命名对象,但这会存在误判的风险。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接