我希望在满足if的条件时两列中的任何一列都可以更改。我是sql新手,你能帮我吗?我的代码:
DO
$do$
BEGIN
IF (select * from V1 where starting-lag >= 7)
THEN
INSERT INTO newstart VALUES (starting - 7);
INSERT INTO newend VALUES (starting - 8);
ELSE
INSERT INTO newstart VALUES (lag +1);
INSERT INTO newend VALUES (lag);
END IF;
END
$do$
;
V1(id, starting, ending, lag, lead,newstart,newend)
它返回:
ERROR: subquery must return only one column
LINE 1: SELECT (select * from V1 where (starting-lag) >= 7)
^
QUERY: SELECT (select * from V1 where (starting-lag) >= 7)
CONTEXT: PL/pgSQL function inline_code_block line 3 at IF
我试图使用更新,但它返回 DETAIL: Views that return window functions are not automatically updatable. HINT: To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule.
1条答案
按热度按时间wmvff8tz1#
我怀疑你想要一个
update
声明而不是insert
,因为您提到您希望更改值。这就是一个update
是的,而insert
创建新行。您要寻找的逻辑可能是:
不需要一个
do
块来实现这个逻辑,一个直接的查询就足够了。