您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

并发操作

SAP IQ 的参照完整性功能限制在对外表执行装载或插入时在主表上进行并发更新或删除。

返回错误的并发操作:

第一个请求重叠事务的请求一个事务请求任何外表的 LOAD/INSERT/UPDATE/ALTER TABLEADD 外键/ALTER TABLE DROP 外键 对其关联的带有可删除行的主表执行 DELETE。 对其关联主表执行 UPDATE。 对其关联主表执行 TRUNCATE。 

如果一个事务请求更改表、添加外键或删除外键,但其它事务正在使用外表和/或主表的旧版本,SAP IQ 也会生成错误。

对于已强制实施或未受强制的外键和主键,SAP IQ 允许:

  • 同时对一个或多个外表和共享主表进行装载或插入。

  • 同时对外表进行装载或插入,并对其它一个或多个外表进行删除、更新或截断。

  • 同时对两个或多个外表进行删除、更新或截断,即使在共享相同的主表时也是如此。

  • 同时对外表进行删除、更新或截断,并对共享的主表进行删除、更新或截断。

  • 如果没有任何事务在使用旧版本的外表/主表,则对外键执行 ALTER TABLE ADD 或 DROP,这些未使用的旧版本将作为 ADD/DROP 外键操作的一部分删除。

    对外表和主表执行并发操作

    SAP IQ 的表级版本控制在允许对外表执行并发装载、插入或更新操作及对主表执行 LOAD/INSERT 操作的同时,可确保一致的参照完整性检查。

    当用于请求 DELETEUPDATE 的事务启动时,SAP IQ 还会验证外表中是否不存在已删除的旧值。这样便可在对外表执行并发删除操作及对 PRIMARY 表执行删除或更新操作时提供一致的参照完整性检查。

    假定两个外表(ftab1 和 ftab2)与一个主表 (ptab) 之间存在两个外键约束。假定外键 ftab1(fk1,fk2) 引用候选键 ptab(pk1,pk2)。外键 ftab2(fk1,fk2) 引用同一候选键。候选键 ptab(pk1,pk2) 可以是主键,也可以是唯一约束。

    下表显示在这两种表(外表和主表)中应允许哪些操作以及哪些操作将返回错误。表中的信息仅适用于强制实施的外键和候选键。

    LOAD 或 INSERT ftab1DELETE/TRUNCATE TABLE ftab1UPDATE ftab1(fk1、fk2)填充新索引(非 FK ftab1(fk1、fk2))ADD FK ftab1(fk1、fk2)DROP FK ftab1(fk1、fk2)LOAD ftab2允许允许允许允许允许允许LOAD ptab允许允许允许允许允许允许INSERT ftab2允许允许允许允许允许允许INSERT ptab允许允许允许允许允许允许DELETE ftab2 TRUNCATE TABLE ftab2允许允许允许允许允许允许DELETE ptab TRUNCATE TABLE ptab错误允许错误允许错误错误UPDATE ftab2(fk1、fk2)允许允许允许允许允许允许UPDATE ptab(pk1、pk2)错误允许错误允许错误错误填充新索引允许允许允许允许允许允许QUERY(正在使用含或不含(fk1、fk2)的旧版本 ftab1/ptab)允许允许允许允许错误错误未使用旧版本 ftab2不适用不适用不适用不适用允许(删除所有未使用的旧版本 ftab1)允许(删除所有未使用的旧版本 ftab1) 

    如果一个事务装载外键列,而另一事务更新关联的候选键列,则会发生并发冲突。如果一个事务装载外键列,而另一事务更新其中一个关联候选表上的非关联候选键列,则不会发生冲突。

    注意 为了提高性能,查询 union all 视图将打开用作连接键的列或分组依据列所引用的表。在提交事务并释放表上的读取锁之前,无法对用作连接条件或分组列的外键所在的表进行更改或删除。但是,可以在运行查询时装载、插入、删除和更新这些表。