powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Редактирование свойств полей таблицы в FB3
4 сообщений из 4, страница 1 из 1
Редактирование свойств полей таблицы в FB3
    #38640186
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С недавних пор один из разработчиков постарался и запретил модификацию большинства системных таблиц. В связи с этим редактирование свойств полей таблицы перестало работать .

Например есть такая таблица

Код: sql
1.
2.
3.
4.
CREATE TABLE NEW_TABLE (
    NEW_FIELD  BIGINT,
    F          SMALLINT
);



Пытаемся отредактировать поле NEW_FIELD.

1. Устанавливаем DEFAULT значение

IBE
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
UPDATE RDB$RELATION_FIELDS F1
SET
F1.RDB$DEFAULT_VALUE  = (SELECT F2.RDB$DEFAULT_VALUE
                         FROM RDB$RELATION_FIELDS F2
                         WHERE (F2.RDB$RELATION_NAME = 'NEW_TABLE') AND
                               (F2.RDB$FIELD_NAME = 'IBE$$TEMP_COLUMN')),
F1.RDB$DEFAULT_SOURCE = (SELECT F3.RDB$DEFAULT_SOURCE FROM RDB$RELATION_FIELDS F3
                         WHERE (F3.RDB$RELATION_NAME = 'NEW_TABLE') AND
                               (F3.RDB$FIELD_NAME = 'IBE$$TEMP_COLUMN'))
WHERE (F1.RDB$RELATION_NAME = 'NEW_TABLE') AND
      (F1.RDB$FIELD_NAME = 'NEW_FIELD')



Код: plaintext
1.
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
UPDATE operation is not allowed for system table RDB$RELATION_FIELDS.



хотя это без проблем могло бы делаться так
Код: sql
1.
2.
alter table new_table
alter column new_field set default -1;



если же нажать кнопку "Редактировать домен", то там делается нормально

Код: sql
1.
ALTER DOMAIN RDB$1 SET DEFAULT -1



2. Пробуем изменить тип поля F в допустимых пределах (на INTEGER) через кнопочку "Редактировать домен"

IBE
Код: sql
1.
2.
3.
4.
5.
update RDB$FIELDS set
RDB$FIELD_TYPE = 8,
RDB$FIELD_LENGTH = 4,
RDB$CHARACTER_LENGTH = NULL
where RDB$FIELD_NAME = 'RDB$7'



Код: plaintext
1.
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
UPDATE operation is not allowed for system table RDB$FIELDS.


Цивилизованным способом это можно было сделать так

Код: sql
1.
alter domain RDB$7 TYPE INTEGER;



Хотя в FB2.5 редактирование системных таблиц не запрещено, но для них тоже лучше сделать вышеизложенное
...
Рейтинг: 0 / 0
Редактирование свойств полей таблицы в FB3
    #38645110
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то так и не понял, способа сменить COLLATE домена/поля без правки системных таблиц до сих пор нет?
...
Рейтинг: 0 / 0
Редактирование свойств полей таблицы в FB3
    #38645126
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

хм... похоже что нету. Надо бы пока не поздно в трекер хотелку написать. А то системные таблицы редактировать запретили и получается что коллейт сменить нельзя.
...
Рейтинг: 0 / 0
Редактирование свойств полей таблицы в FB3
    #38645149
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашёл соответствующий тикет http://tracker.firebirdsql.org/browse/CORE-1202
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Редактирование свойств полей таблицы в FB3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]