Выполнить ошибку вставки блока "Слишком много контекста отношений / процедур / представлений".
Я пытаюсь реализовать массовую вставку в мою базу данных Firebird, используя вставку блоков.
Синтаксис выглядит следующим образом:
EXECUTE BLOCK AS
BEGIN
UPDATE OR INSERT INTO MY_TABLE (F_1, F_2) VALUES ('1', NULL) ;
UPDATE OR INSERT INTO MY_TABLE (F_1, F_2) VALUES ('2', '01.01.2016') ;
...
...
END
Конечно, запросы немного сложнее с большим количеством полей, но, конечно, я столкнулся со следующим сообщением об ошибке:
"Слишком много контекста отношений / процедур / представлений. Максимально допустимое значение - 255"
когда количество запросов где-то выше 80. Я действительно не знаю отношения между показанным 255
и мои запросы.
Любая помощь?
ОБНОВИТЬ
Некоторая важная информация DDL:
CREATE TABLE MY_TABLE
(
F_1 INTEGER NOT NULL,
F_2 TIMESTAMP,
F_3 INTEGER,
LAST_UPDATE TIMESTAMP
CONSTRAINT PK_MY_TABLE PRIMARY KEY (F_1)
);
ALTER TABLE F_1 ADD CONSTRAINT FK_MY_TABLE_F_3_SOME_OTHER
FOREIGN KEY (F_3) REFERENCES SOME_OTHER
(SOME_OTHER_PK_ID)
ON DELETE NO ACTION
ON UPDATE NO ACTION
;
CREATE ASC INDEX I_MY_TABLE_F1 ON MY_TABLE (F1);
CREATE DESC INDEX I_MY_TABLE_LAST_UPDATE ON MY_TABLE (LAST_UPDATE);
SET TERM ^^ ;
CREATE TRIGGER MY_TABLE_BIU FOR MY_TABLE ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS
begin
if (new.F1 is null) then
begin
new.F1 = gen_id( GEN_MY_TABLE_F1, 1 );
end
new.LAST_UPDATE = current_timestamp;
end ^^
SET TERM ; ^^
Обратите внимание, что у меня есть несколько FK, до 10, и, как уже было сказано, гораздо больше полей.