У меня есть скрипт .sql, подобный этому:
DO $$
DECLARE
prev_count := (SELECT count(*) FROM ...);
END$$;
UPDATE [...]
DO $$
DECLARE
cur_count := (SELECT count(*) FROM ...);
BEGIN
ASSERT cur_count = prev_count, 'Mismatch';
END$$;
, в котором я получаю некоторое значение, изменяю базу данных и ожидаю, что новое значение будет соответствовать старому значению.Однако я получаю такие ошибки:
psql:migration.sql:163: ERROR: column "prev_count" does not exist
LINE 1: SELECT cur_count = prev_count
^
QUERY: SELECT cur_count = prev_count
CONTEXT: PL/pgSQL function inline_code_block line 4 at ASSERT
Я не могу сказать, является ли это проблемой ограничения из-за анонимного блока и почему он пытается обработать мои переменные как столбцы.Есть идеи?