sasha wrote:

1) Создал домен: CREATE DOMAIN "Key" AS INT;

и таблицу с ПК типа этого домена: CREATE TABLE TAB (ID "Key" PRIMARY KEY);

Данные в таблицу не вставлял!!!

Пофиг, DDL никогда не смотрит на данные.

Пишу: ALTER DOMAIN "Key" TYPE BIGINT;

получаю:
MODIFY RDB$FIELDS failed.
action cancelled by trigger (1) to preserve data integrity.
Cannot update index segment used by an Integrity Constraint.

Почему?

Потому что индекс для PK уже создан и он не совместим с новым форматом поля. А перестраивать целую кучу оных индексов по ALTER-у домена - бред.

2) Еть домен: CREATE DOMAIN "Text" AS VARCHAR(10) CHARACTER SET UTF8 COLLATE UTF8;

Говорю: ALTER DOMAIN "Text" TYPE VARCHAR(9) CHARACTER SET UTF8

А сервер мне: New size specified for column Text must be at least 40 characters.

Что, к стати, неправильно. Небыло у меня 40 символов.

Это он брешет, путая байты с символами. Должен требовать не менее 10 символов.

Но вопрос не в этом. Вопрос в том почему нельзя попытаться укоротить и если все поля влезут, то всё нормально, а иначе нах. слать...

Патамучта так сделано. Специально. Нефиг шерстить все записи всех таблиц ради твоего хотения.

ЗЫ. Радуйся, что хоть так, а то стандарт даже увеличивать поля не дает.


--
Дмитрий Еманов

Ответить