我正在尝试使用块插入实现批量插入到我的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个,如上所述,还有更多字段。