Описание того, как это сделать, можно найти на Изменение размера столбца в таблице PostgreSQL без изменения данных .Вы должны взломать данные каталога базы данных.Единственный способ сделать это официально - использовать ALTER TABLE, и, как вы заметили, изменение заблокирует и перезапишет всю таблицу во время ее работы.
Убедитесь, что вы прочитали Типы символов раздел документов, прежде чем изменить это.Всевозможные странные случаи, о которых нужно знать здесь.Проверка длины выполняется, когда значения сохраняются в строках.Если вы взломаете нижний предел, это не уменьшит размер существующих значений.Было бы целесообразно выполнить сканирование всей таблицы в поисках строк, длина поля которых превышает 40 символов после внесения изменений.Вам нужно будет выяснить, как урезать их вручную - так что вы вернетесь к некоторым блокировкам только для слишком больших - потому что если кто-то попытается обновить что-либо в этом ряду, он отклонит его как слишком большое сейчас, в моментэто идет, чтобы сохранить новую версию ряда.Для пользователя возникает веселость.
VARCHAR - ужасный тип, существующий в PostgreSQL только для соответствия связанной с ним ужасной части стандарта SQL.Если вас не волнует совместимость с несколькими базами данных, рассмотрите возможность хранения ваших данных в формате TEXT и добавьте ограничение, ограничивающее их длину.Ограничения, которые вы можете изменить без этой проблемы с блокировкой / перезаписью таблицы, и они могут выполнять больше проверок целостности, чем просто проверка слабой длины.