postgresql - 错误:无法更改视图或规则使用的列的类型详细信息:视图上的规则 _RETURN 取决于列“状态”
问题描述
我正在尝试在 postgres 中将整数类型的列更新为 numeric(2)
ALTER TABLE employee_status
ALTER COLUMN status TYPE numeric(2);
但收到错误错误:无法更改视图或规则使用的列的类型详细信息:视图 v_employee_details 上的规则 _RETURN 取决于列“状态”
在不删除或删除数据的情况下,我该如何实现?有什么方法可以禁用规则或视图
解决方案
唯一可能的方法是删除并重新创建视图。
但这没问题,您可以使用pg_get_viewdef
function轻松获取视图定义。
如果您有很多依赖视图,请查看此答案以按正确顺序获取所有依赖视图。
不要担心_RETURN
规则:这只是 PostgreSQL 中视图如何实现的一个实现细节:作为ON SELECT DO INSTEAD
名为_RETURN
.
do $$
declare v_employee_details_def text;
declare exec_text text;
begin
v_employee_details_def := pg_get_viewdef('v_employee_details');
drop view v_employee_details;
-- do your other stuff
exec_text := format('create view v_employee_details as %s',
v_employee_details_dev);
execute exec_text;
end $$;
推荐阅读
- uwp - 从哪里可以下载 VSTS Build 生成的构建符号?
- json - 在 JSON 布尔类型中允许传递 int,而不是抛出错误
- bash - 快速搜索以查找活动网址
- sql - 如何从 oracle join 中删除重复值?
- jquery - 将来自 url 的传入查询字符串附加到页面上的特定链接
- python - 如何从保存在 JSON 文件中的权重重建 keras 模型?
- java - 反序列化 JSON 以创建 POJO 和相关参考
- hibernate - Ubuntu 18.04 更新休眠挂起
- mysql - MySQL ODBC 8.0 Unicode 驱动程序连接错误 [H000]
- python - 如何将 url 作为用户输入传递以通过 Selenium 和 Python 调用?