Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有“带检查选项”但也带有“连接”的SQL视图_Sql_Postgresql - Fatal编程技术网

带有“带检查选项”但也带有“连接”的SQL视图

带有“带检查选项”但也带有“连接”的SQL视图,sql,postgresql,Sql,Postgresql,您好,我尝试使用以下代码创建视图: ` 这包括老板在内的每个员工在同一个表中都有自己的id和老板id,所以我必须加入他们,现在我必须修改它并添加复选选项。我已经尝试了几个小时的子查询,case和with,但我得到了错误:with check选项仅在自动更新视图中可用 提示:从一个表或显示中检索的数据视图不能自动修改。或者它不起作用。我知道我不能使用join,但我不知道如何使用它。 我发明的最好的东西是: create view testY as select name as emp_name

您好,我尝试使用以下代码创建视图: `

这包括老板在内的每个员工在同一个表中都有自己的id和老板id,所以我必须加入他们,现在我必须修改它并添加复选选项。我已经尝试了几个小时的子查询,case和with,但我得到了错误:with check选项仅在自动更新视图中可用 提示:从一个表或显示中检索的数据视图不能自动修改。或者它不起作用。我知道我不能使用join,但我不知道如何使用它。 我发明的最好的东西是:

create view testY as
select name as emp_name
       , (select e2.name as boss_name 
          from employees e1 
          join employees e2 on e1.boss_id=e2.emp_id
          where e1.salary < e2.salary)
from employees 
with check option;
但这是没有用的,因为复选选项不适用于只显示员工收入低于员工老板的情况。 有没有办法不使用join或使用带有join的check选项?

你不能

在PostgreSQL中,当视图的定义查询在FROM子句中必须只有一个条目时,视图是可更新的


查询中不是这样,因为您正在尝试连接两个表。你应该重新思考问题的解决方案,或者更好的是,解释一下你想用它实现什么。

你不能做你想做的事。您希望视图包含来自不同行的信息,而这些信息是不可更新的。
create view testY as
select name as emp_name
       , (select e2.name as boss_name 
          from employees e1 
          join employees e2 on e1.boss_id=e2.emp_id
          where e1.salary < e2.salary)
from employees 
with check option;