我在我的 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 不能有 函数中的参数返回无效错误
您可以尝试在设置序列值时将
SELECT
替换为PERFORM
,如下所示:
PERFORM SETVAL('test_seq', COALESCE((SELECT MAX(ID)+1 FROM test1.table1), 1), FALSE);