Я изменяю свою существующую таблицу, которая уже заполнена столбцами.В моей таблице 'section' я хочу установить ограничение на количество символов в столбце "name", в частности наберите VARCHAR (60). Однако раньше не было ограничения на количество символов, и я хотел быобрезать все существующие поля в столбце имени, чтобы оно теперь соответствовало этому ограничению перед моим сценарием ALTER.
Я все еще получаю несколько сообщений об ошибках, в том числе в своем операторе LEFT, который я использую для усечениястрока в столбце «имя».Оператор LEFT расстроен тем, как я объявляю строку для усечения, независимо от того, помещаю ли я параметры в круглые скобки или нет.Вот где я сейчас нахожусь:
DO $$
DECLARE
_name text;
_id uuid;
BEGIN
FOR _name, _id IN SELECT (name, id) FROM %SCHEMA%.section
LOOP
IF (_name > 60)
THEN
SET name = LEFT (_name, 60) WHERE id = _id;
END IF;
END LOOP;
RETURN NEW;
END $$;
Как только я это сделаю, я знаю, что мой скрипт ALTER очень прост:
ALTER TABLE IF EXISTS %SCHEMA%.section ALTER COLUMN name TYPE VARCHAR(60);