Искам да заредя някои SQL функции в празна база данни чрез psql:
psql -d my_database -f fuctions.sql --set ON_ERROR_STOP=1
Използвам --set ON_ERROR_STOP=1
, защото искам psql да се провали, ако скриптът съдържа грешки.
Съдържанието на functions.sql
е:
CREATE or REPLACE FUNCTION test_function() RETURNS INT AS $$
SELECT id from test_table;
$$ LANGUAGE sql;
Проблемът ми е, че psql проверява дали test_table
съществува при зареждане на функция и се проваля с тази грешка:
ERROR: relation "test_table" does not exist LINE 2: SELECT id from test_table;
Но не искам тази psql проверка дали таблицата съществува, защото ще създам тази таблица по-късно.
Следните решения ще работят, но не мога да ги използвам:
- Игнорирайте грешките. Искам psql да излезе с грешка, ако скриптът съдържа т.е. sql синтактични грешки.
- Използвайте plpgsql функции вместо sql. Разбира се, бих могъл, но простите sql функции често са най-добрият избор.
- Първо създайте таблицата. Моят реален сценарий всъщност е по-сложен от този пример.