Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
 Read оnly столбец в гриде на поле view при наличии триггера  [new]
Polesov
Member

Откуда:
Сообщений: 790
Привет.

Создадим таблицу с вычисляемым полем и заполним ее:
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 изменить значение ячейки нельзя.

Создадим представление:
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-запрос, то данные в таблице меняются:
update V
   set CALC = 2
 where ID = 2;

commit;


С уважением, Polesov.
21 ноя 20, 14:08    [22236388]     Ответить | Цитировать Сообщить модератору
 Re: Read оnly столбец в гриде на поле view при наличии триггера  [new]
Polesov
Member

Откуда:
Сообщений: 790
Polesov, куда-то строка делась

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
21 ноя 20, 14:23    [22236393]     Ответить | Цитировать Сообщить модератору
 Re: Read оnly столбец в гриде на поле view при наличии триггера  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3330
Исправил.
29 ноя 20, 08:00    [22239910]     Ответить | Цитировать Сообщить модератору
Все форумы / IBExpert Ответить