powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Read оnly столбец в гриде на поле view при наличии триггера
3 сообщений из 3, страница 1 из 1
Read оnly столбец в гриде на поле view при наличии триггера
    #40020996
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Создадим таблицу с вычисляемым полем и заполним ее:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table T (
    ID    integer not null,
    VAL   integer not null,
    CALC  computed by ( VAL + 1 )
);

alter table T
  add constraint PK_T
      primary key ( ID );

insert into T ( ID, VAL ) values ( 1, 2 );
insert into T ( ID, VAL ) values ( 2, 3 );

commit;


Если для таблицы открыть вкладку "Data", то в столбце CALC изменить значение ячейки нельзя.

Создадим представление:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create view V (
    ID,
    VAL,
    CALC )
as
select ID,
       VAL,
       CALC
  from T
;

set term ^ ;

create trigger V_BU for V
as
begin
  if ( new.CALC is distinct from old.CALC ) then
    new.VAL = new.CALC - 1;

  update T
     set VAL = new.VAL
   where ID = old.ID;
end ^

set term ; ^


Если для представления открыть вкладку "Data", то в столбце CALC изменить значение ячейки по прежнему нельзя.

Хотя, если выполнить UPDATE-запрос, то данные в таблице меняются:
Код: sql
1.
2.
3.
4.
5.
update V
   set CALC = 2
 where ID = 2;

commit;



С уважением, Polesov.
...
Рейтинг: 0 / 0
Read оnly столбец в гриде на поле view при наличии триггера
    #40020999
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov, куда-то строка делась

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create trigger V_BU for V
active before update position 0
as
begin
  if ( new.CALC is distinct from old.CALC ) then
    new.VAL = new.CALC - 1;

  update T
     set VAL = new.VAL
   where ID = old.ID;
end
...
Рейтинг: 0 / 0
Read оnly столбец в гриде на поле view при наличии триггера
    #40023104
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Read оnly столбец в гриде на поле view при наличии триггера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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