SQL 变更集中的 Liquibase PostgreSql 异常

问题描述 投票:0回答:1

我在我的 liquibase 变更集中使用下面的 sql 从另一个表插入数据。

  DO $$
  BEGIN
  IF EXISTS
  ( SELECT 1
  FROM   information_schema.tables
  WHERE  table_schema = 'test1'
  AND    table_name = 'table1'
  )
  THEN
  INSERT INTO table2(col1, col2, col3, col4)
  SELECT col1, col2, col3, col4
  FROM test1.table1;
  SELECT SETVAL('test_seq', COALESCE((SELECT MAX(ID)+1 FROM test1.table1), 1), FALSE);
  END IF;
  END
  $$;

但是我遇到了以下错误,

原因:liquibase.exception.DatabaseException: ERROR: query has no 结果数据的目的地 提示:如果你想丢弃 SELECT 的结果,请改用 PERFORM。

我尝试添加返回语句,但我得到了

org.postgresql.util.PSQLException:错误:RETURN 不能有 函数中的参数返回无效错误

java postgresql liquibase
1个回答
0
投票

您可以尝试在设置序列值时将

SELECT
替换为
PERFORM
,如下所示:

PERFORM SETVAL('test_seq', COALESCE((SELECT MAX(ID)+1 FROM test1.table1), 1), FALSE);
© www.soinside.com 2019 - 2024. All rights reserved.