postgresql - 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;
没有必要重命名它们,但不这样做感觉不对。我想知道是否有自动执行此操作的命令。或者重命名包含旧表名的所有对象不是很常见吗?
解决方案
索引、序列等的名称与任何表名称之间没有技术关系。所以没有可靠的方法来自动重命名它们。
您可以编写一个脚本来遍历架构并通过搜索和替换重命名事物,但这会带来误报的风险。
推荐阅读
- java - 原生 Android Inapp 购买 在哪里配置 Base64 编码的 RSA 许可证密钥?
- angular - “AngularFireObject<{}>”类型上不存在属性“管道”
- uwp - 为什么 StorageFile.GetFilesAsync() 在 dll 中崩溃?
- android - 如何使用 EditText 在片段和活动之间传递信息?
- windows - 如何修复命令提示符上的 Python“版本错误”?
- reactjs - 为每个 onChangeText 更新 TextInput 的 redux 状态是否是一个好习惯
- ios - 如何在 iPhone X 上获取 tabBar 的高度
- vim - 当 ^n 在 ssh 上的 vim 中时,突出显示行上的文本被隐藏
- python - Jupyter Notebook 中的 Tqdm 4.28.1“未找到 IntProgress。请更新 jupyter 和 ipywidgets。”
- canvas - P5.JS:将生成艺术(使用噪声())保存为设备上的图像并在 HTML 上重新上传它们