使用 CREATE ACCESS_METHOD 语句在 sysams 系统目录表中注册新的主或辅助存取方法。
该语句是 SQL ANSI/ISO 标准的扩展。
CREATE ACCESS_METHOD 语句将用户定义的存取方法添加到数据库。要创建存取方法,必须指定目的函数(或目的方法)、目的标志或目的值作为存取方法的属性,并将关键字(基于 sysams 系统目录表中列名)与 UDR 相关联。您必须具有 DBA 或 Resource 权限才能创建存取方法。
有关设置目标选项的信息,包含所有函数关键字的列表,请参阅用途选项。
PRIMARY 关键字为虚拟表指定用户定义的主存取方法。SECONDARY 关键字为虚拟索引指定创建用户定义的辅助存取方法。SECONDARY 关键字(和创建虚拟索引)在 Java™ Virtual-Table Interface 中不受支持。
CREATE SECONDARY ACCESS_METHOD T_tree ( am_getnext = ttree_getnext, . . . am_unique, am_cluster, am_sptype = 'S' );
在前面的示例中,在目标选项列表中的 am_getnext 关键字与 ttree_getnext( ) UDR 关联作为满足查询而扫描下一项的方法的名称。该示例指示了 T_tree 辅助存取方法支持唯一键和集群,并驻留在 sbspace 中。
任何目标函数任务中与 CREATE ACCESS_METHOD 语句相关联的 UDR(例如,之前示例中 ttree_getnext( ) 和 am_getnext 的关联),必须已经由 CREATE FUNCTION 语句(或者具有等同功能的语句,例如:CREATE PROCEDURE FROM))在数据库中注册过。
CREATE PRIMARY ACCESS_METHOD am_tabprops ( am_open = FS_open, am_close = FS_close, am_beginscan = FS_beginScan, am_create = FS_create, am_scancost = FS_scanCost, am_endscan = FS_endScan, am_getnext = FS_getNext, am_getbyid = FS_getById, am_drop = FS_drop, am_truncate = FS_truncate, am_rowids, am_sptype = 'x' );
如果包含可选的 IF NOT EXISTS 关键字,且该指定名称的存取方法已将存在于当前数据库中,则数据库服务器不采取操作(而不是向此应用程序发送异常)。