对 ROW 类型列字段的用户定义的例程和引用是无效的。您不能将一个分片表连接到另一个分片表。
所有存储分片的 dbspace 必须拥有相同的页面大小。
对两个分片表的 ATTACH 操作无法产生按区间或列表分片的活表(GBase_8t surviving
table)。(如果您要连接两个非分片的表,使用 ALTER FRAGMENT 的 INIT 操作为其中一个非分片表定义其区间或列表分片结构,然后使用 ATTACH
选项连接第二个表。)
对于按区间分片的活表(surviving tables),有以下限制:
- 由于数据库服务器决定区间分片的初始位置,所以 BEFORE 和 AFTER 指定无效。
- 您无法连接表达式符合现有区间分片表达式的分片。
- 当连接的分片超过事务值,要连接的分片的上限必须位于区间分片的界限。就是说,分片的上限值必须等于事务值乘以区间值的整数倍。
对于受同一安全策略保护的分片表,如果以下任一条件不满足,那么连接分片到表就会是失败:
- 源表和目标表都受同一安全策略的保护;
- 两个表都具有相同的保护粒度(是行级别或列级别或都具有行级别和列级别);
- 在两个表中,受保护的列的相同设置是由相同的安全标签所保护。如果有多余的受保护列,每个表就会有多于一个安全标签,但是该相同的标签必须保护两个表中的相同的列。
如果由于不符合以上任一条件而使 ATTACH 操作失败的话,您可以使用 ALTER TABLE 语句让两个表的模式相同, 然后对其重复 ALTER FRAGMENT
ATTACH
语句。
只有持有 DBSECADM 角色的用户才能引用 ALTER FRAGMENT 语句中受保护的表。