指定的列不能是 column.field 格式。即,您所存储的智能大对象不能是 ROW 类型的一个字段。
每个智能大对象都存储在单独的 sbspace 中。除非 PUT 子句 指定了另外的区域,否则 SBSPACENAME 配置参数指定在其中创建智能大对象的系统缺省值。
例如,以下示例创建只包含了 BLOB 数据类型列的 tabwblob 表。声明该列的名称为 image01,且 PUT 子句指定所有的 BLOB 对象的存储位置为 sbspace01 :
CREATE TABLE tabwblob ( image01 BLOB ) PUT image01 IN (sbspace01);
要使以上示例有效,则 sbspace01 必须已经存在。因为 PUT 子句没有指定其它选项,所以 sbspace01 具有 extent 大小的缺省值和 PUT 子句能定义的其它存储特征的缺省值,包括以下定义中的 NO LOG 、HIGH INTEG 和 NO KEEP ACCESS TIME 。
CREATE TABLE tabw2blobs ( image02 BLOB, commentary03 CLOB ) PUT image02 IN (sbspace01), commentary03 IN (sbspace01);
可以在循环分布方案中指定多个 sbspace 来存储同一 BLOB 或 CLOB 列,这样每个 sbspace 中的智能大对象旧大致相同。单个列的 sbspace 列表(按逗号分隔)必须包含在括号内。
下一示例定义了 tabw2sblobs 表,它具有两列,image04 列是 BLOB 类型,commentary05 列是 CLOB 类型。PUT 子句指定 image04 列中的 BLOB 对象存储在两个 sbspace 中:sbspace01 和 sbspace02 ,而 image05 列中所有的 CLOB 对象存储在 sbspace03 sbspace 中:
CREATE TABLE tabw2sblobs ( image04 BLOB, commentary05 CLOB ) PUT image04 IN (sbspace01,sbspace02), commentary05 IN (sbspace03);
如果 INSERT 或 MERGE 操作向此示例中的表中添加六个新的行,
当您跨不同的 sbspace 传递智能大对象时,可以用较小的 sbspace 操作。如果限制了 sbspace 的大小,则备份和归档操作会加快执行,有关 PUT 子句的其它示例,请参阅完全备份的备用方式。
以下存储选项可用于存储 BLOB 和 CLOB 数据:
定义 sbspace 特征的关键字选项的逗号分隔的列表必须包含在括号中内,且紧随存储 BLOB 或 CLOB 列的 sbspace (或 sbspace 列表)的后面。在以下示例中, PUT 子句指定未日志记录的 sbspace01 和 sbspace02 sbspaces 存储 image04 列的 BLOB 对象,它们与 sbspace03 具有不同的特征,sbspace03 是一个日志记录的 sbspace ,它存储 commentary05 列的 CLOB 对象:
CREATE TABLE tabw2sblobs ( image04 BLOB, commentary05 CLOB ) PUT image04 IN (sbspace01,sbspace02) (KEEP ACCESS TIME, MODERATE INTEG), commentary05 IN (sbspace03) (EXTENT SIZE 30, LOG);
当您为智能大对象启动日志记录时,必须立即执行 0 级备份以便恢复并重新存储智能大对象。