--- title: "CREATE ACCESS METHOD" id: sql-create-access-method pg_version: "20devel" --- # CREATE ACCESS METHOD — define a new access method ## Synopsis ``` CREATE ACCESS METHOD name TYPE access_method_type HANDLER handler_function ``` ## Description `CREATE ACCESS METHOD` creates a new access method. The access method name must be unique within the database. Only superusers can define new access methods. ## Parameters **`name`** The name of the access method to be created. **`access_method_type`** This clause specifies the type of access method to define. Only `TABLE` and `INDEX` are supported at present. **`handler_function`** `handler_function` is the name (possibly schema-qualified) of a previously registered function that represents the access method. The handler function must be declared to take a single argument of type `internal`, and its return type depends on the type of access method; for `TABLE` access methods, it must be `table_am_handler` and for `INDEX` access methods, it must be `index_am_handler`. The C-level API that the handler function must implement varies depending on the type of access method. The table access method API is described in [Chapter 62](tableam.md) and the index access method API is described in [Chapter 63](indexam.md). ## Examples Create an index access method `heptree` with handler function `heptree_handler`: CREATE ACCESS METHOD heptree TYPE INDEX HANDLER heptree_handler; ## Compatibility `CREATE ACCESS METHOD` is a PostgreSQL extension. ## See Also [DROP ACCESS METHOD](sql-drop-access-method.md), [CREATE OPERATOR CLASS](sql-createopclass.md), [CREATE OPERATOR FAMILY](sql-createopfamily.md)