Изменить столбец, участвующий в представлении или правиле
Я использую инструмент под названием giswater для моделирования нашей водопроводной канализации и ливневых сетей. Инструменты создают базу данных из нескольких простых входных данных, в одном из которых используется SRID. столбцы геометрии все xy, и я хочу, чтобы все они знали ZM. Когда я запускаю команду изменения таблицы для обновления геометрии, я получаю сообщение об ошибке "Не удается изменить столбец, участвующий в представлении или правиле". В любом случае, чтобы принудительно изменить это значение и игнорировать ошибку? Я попытался изменить представление, чтобы оно не ссылалось на столбец, и я попытался добавить новый столбец геометрии, чтобы временно переключить представление, пока я делаю изменение. Очевидно, я не могу удалить столбец в представлении или изменить его на другой столбец. Я также попытался записать схему в SQL, затем отредактировал строки sql для linestring и указал на linestringzm и pointzm и использовал psql для запуска файла для обновления схемы; все, что я получаю, это отказано в доступе с помощью "psql -U postgres -d утилита -1 -f \i Z:......\xyz_test.sql" Также пробовал pg_restore. В любом случае, чтобы заставить изменения с помощью pg_admin4? или другие предложения?
1 ответ
Я не знаком с инструментом, который вы используете, но я бы предложил проверить все объекты (представления и правила), ссылающиеся на вашу таблицу, с помощью приведенной ниже команды.
ВЫБЕРИТЕ DISTINCT so.name ОТ syscomments sc ВНУТРЕННЕЕ СОЕДИНЕНИЕ sysobjects так ВКЛ sc.id=so.id ГДЕ sc.TEXT LIKE '%tablename%'
Затем выполните резервное копирование этих объектов и полностью отбросьте их, прежде чем пытаться изменить таблицу.