Решил перевести базу с FB 1.5.3 (ods 10.1) на FB 2 (ods 11). По опыту предидущих апдейтов и переходов, решил что бекапа/рестора будет достаточно. База рестор прошла БЕЗ ошибок. Но при попытке записи (UPDATE) в одну из таблиц стала писаль следующее:
Код: Выделить всё
This column cannot be updated because it is derived from an SQL function or expression.
attempted update of read-only column.
Где может быть косяк и как его примерно можно исправить ? Есть подозрение на права
текст таблицы : (пересоздавать не пробовал). FB2 2.0.0.12745
Код: Выделить всё
SET SQL DIALECT 3;
SET NAMES WIN1251;
/******************************************************************************/
/*** Tables ***/
/******************************************************************************/
CREATE TABLE S$_DATE_OP (
MODEID SMALLINT,
MODEDATE DATE
);
/******************************************************************************/
/*** Triggers ***/
/******************************************************************************/
SET TERM ^ ;
/******************************************************************************/
/*** Triggers for tables ***/
/******************************************************************************/
/* Trigger: S$_DATE_OP_AU0 */
CREATE TRIGGER S$_DATE_OP_AU0 FOR S$_DATE_OP
ACTIVE AFTER UPDATE POSITION 0
AS
declare M date;
begin
/* Trigger text */
if (new.modeid=2) then begin
if (new.modedate<old.modedate) then begin
delete from close_date
where cdate=old.modedate;
m=incdate(old.modedate,0,-1,0);
m=lastdaymonth(:m);
update naclhead set naclhead.LOCK_DH='F'
where naclhead.docdate>:M and naclhead.docdate<=old.modedate;
end -- if modedate<old.modedate
end
end
^
/* Trigger: S$_DATE_OP_AU1 */
CREATE TRIGGER S$_DATE_OP_AU1 FOR S$_DATE_OP
ACTIVE AFTER UPDATE POSITION 1
AS
begin
/* Trigger text */
if ((new.modedate<>old.modedate) and (old.modeid=2)) then
insert into modedate_log(old_date,new_date)
values (old.modedate,new.modedate);
end
^
SET TERM ; ^
/******************************************************************************/
/*** Descriptions ***/
/******************************************************************************/
COMMENT ON TABLE S$_DATE_OP IS
'Даты проверок и етс.';
/* Fields descriptions */
COMMENT ON COLUMN S$_DATE_OP.MODEID IS
'1 - проверка остатков
2 - закрытий период (залоченые документы)';
/******************************************************************************/
/*** Privileges ***/
/******************************************************************************/
/* Privileges of triggers */
GRANT UPDATE, REFERENCES ON S$_DATE_OP TO TRIGGER S$_DATE_OP_AU0;
GRANT UPDATE, REFERENCES ON S$_DATE_OP TO TRIGGER S$_DATE_OP_AU1;
/* Privileges of procedures */
GRANT SELECT, INSERT, UPDATE ON S$_DATE_OP TO PROCEDURE CHECK_MINUSOSTATOK;
GRANT SELECT, INSERT, UPDATE ON S$_DATE_OP TO PROCEDURE CLOSE_SOFT_PERIOD;
GRANT SELECT ON S$_DATE_OP TO PROCEDURE GET_AVG_CARD_ONE;
GRANT SELECT ON S$_DATE_OP TO PROCEDURE SET_MVIT_FIFO;