Я имел в виду не миграции с движка на движок. Sqlibrist решает задачу изменений структуры БД при, скажем, разработке и переносе этих изменений с девелоперской на другие экземпляры базы: тестовую, продакшен. Когда нужно написать патч, меняющий/добавляющий объекты базы.
Поступает, как следует. Например, есть две перегруженные функции: test(a integer) и test(b text). Описываем каждую в отдельном файле:
test_int.sql:
--UP
create function test(a integer)
returns boolean
as $$
return true;
$$
language plpgsql;
--DOWN
drop function test(integer);
test_text.sql:
--UP
create function test(b text)
returns boolean
as $$
return false;
$$
language plpgsql;
--DOWN
drop function test(text);
Теперь, если вы меняете одну из них, скажем, первую, то она сначала удалится инструкцией из раздела --DOWN, а потом пересоздастся. При этом DROP FUNCTION отличаются типами аргументов, поэтому путаницы не будет.
test_int.sql:
test_text.sql:
Теперь, если вы меняете одну из них, скажем, первую, то она сначала удалится инструкцией из раздела --DOWN, а потом пересоздастся. При этом DROP FUNCTION отличаются типами аргументов, поэтому путаницы не будет.