Как получить имя ограничения в существующей базе данных
При миграции я хочу удалить индекс из таблицы (перед добавлением нового). Я могу сделать это с помощью RunSQL
следующим образом:
ALTER TABLE model DROP CONSTRAINT model_pkey
Но оказывается, что название ограничения (для первичного ключа) не всегда одинаково, потому что раньше оно называлось по-другому.
Поэтому я ищу способ получить имя ограничения, даже если оно не является именем по умолчанию.
Вот что у меня получилось :
DO $$
BEGIN
EXECUTE 'ALTER TABLE model DROP CONSTRAINT ' || (
SELECT indexname
FROM pg_indexes
WHERE tablename = 'model' AND indexname LIKE '%pkey'
);
END $$;