Добрый день.
FB 2.5.6 CS.
Все действия выполнялись в isql.
Создадим таблицу и заполним ее данными:
SQL> CREATE TABLE T (
CON> ID INTEGER NOT NULL,
CON> VAL VARCHAR(10)
CON> );
На базе таблицы создадим view:
SQL> CREATE OR ALTER VIEW V (
CON> ID,
CON> VAL )
CON> AS
CON> SELECT ID,
CON> VAL
CON> FROM T
CON> ;
Создадим домен и изменим на него тип поля VAL:
SQL> CREATE DOMAIN D_STR10 AS VARCHAR(10);
SQL> ALTER TABLE T ALTER COLUMN VAL TYPE D_STR10;
Ошибка попытки удалния системного домена:
Statement failed, SQLSTATE = 42000
unsuccessful metadata update
-cannot delete
-DOMAIN RDB$2
-there are 1 dependencies
Немного изменим сценарий:
Создадим таблицу:
SQL> CREATE DOMAIN D_STR10 AS VARCHAR(10);
SQL> CREATE TABLE T (
CON> ID INTEGER NOT NULL,
CON> VAL D_STR10
CON> );
На базе таблицы создадим view:
SQL> CREATE OR ALTER VIEW V(
CON> ID,
CON> VAL)
CON> AS
CON> SELECT ID,
CON> VAL
CON> FROM T
CON> ;
Изменим тип и заполним значения поля VAL:
SQL> CREATE DOMAIN D_STR20 AS VARCHAR(20);
SQL> ALTER TABLE T ALTER COLUMN VAL TYPE D_STR20;
SQL> INSERT INTO T (ID, VAL)
CON> VALUES (1, '---------1---------1');
SQL> INSERT INTO T (ID, VAL)
CON> VALUES (2, '---------2---------2');
SQL> COMMIT;
Запрос из view вызывает ошибку:
SQL> SELECT *
CON> FROM V;
ID VAL
============ ==========
Statement failed, SQLSTATE = 22001
arithmetic exception, numeric overflow, or string truncation
-string right truncation
Понятно, что после перекомпиляции view ошибка исчезает.
С уважением, Polesov.