使用 BYTE 和 TEXT 列拆离
如果 DETACH 子句指定包含 BYTE 或 TEXT 数据类型的简单大对象的表的第一个分片,那么数 据库服务器会锁定该表中每个分片的 blobspace 。要拆离该表的其它分片,那么请只锁定指定分片 的 blobspaces ,而不是所有分片的 blobspaces ,如果此分片不是第一个那么需要较少的锁。
从受保护的表拆离
如果 DETACH 子句指定安全策略保护的表执行成功的话,数据库服务器会创建受相同安全策略保 护的表,并具有相同行安全标签的 IDSSECURITYLABEL 列,和相同受保护的列集合作为初始表。IDSSECURITYLABEL 列有 NOT NULL 约束。只有持有 DBSECADM 角色的用户可以引用 ALTER FRAGMENT 语句中受保护的表。
生成未分片表的拆离
以下示例使用了已分片为两个 dbspace dbsp1 和 dbsp2 的表 cur_acct:
ALTER FRAGMENT ON TABLE cur_acct DETACH dbsp2 accounts;
此示例将 dbsp2 从 cur_acct 的分布方案拆离,并将这些行放入一个新表 accounts 中。表 accounts 现在具有与 cur_acct 相同的结构(列名、列数、数据类型等),但表 accounts 不包 含表 cur_acct 中的任何索引和约束。这两个表现在都未分片的。以下示例显示了一个包含三个分 片的表:
ALTER FRAGMENT ON TABLE bus_acct DETACH dbsp3 cli_acct;
此语句将 dbsp3 从 bus_acct 的分布方案拆离,并将这些行放入一个新表 cli_acct 中。表 cli_acct
现在具有与 bus_acct 相同的结构(列名、列数、数据类型等),但表 cli_acct 不包含表 bus_acct
的任何索引和约束。表 cli_acct 是一个未分片表,但表 bus_acct 仍是一个分片表。




