Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/sessions/set/ Documentation version: v5.3.2 # SESSION SET `SESSION SET`命令用于为当前会话设置 Schema、图、临时图或参数。 若要查看当前会话的详细信息,可使用 [SHOW CURRENT_SESSION](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-current-session/)。 ## 语法 语法图源码 session_set_command ```` session_set_command ::= 'SESSION' 'SET' ( 'SCHEMA' schema_reference | 'GRAPH' ((schema_reference '/')? graph_name | temp_graph_name) | 'VALUE' (parameter_name '=' value_expression) (',' (parameter_name '=' value_expression) )* ) ```` ## 参数 ### `schema_reference` 所引用的 Schema 路径。 - 为当前会话设置 Schema 时,`schema_reference`为要设置为当前会话 Schema 的所在路径。如未设置,则当前会话的 Schema 默认为`/default_schema`。 - 为当前会话设置图时,`schema_reference`为要设置为当前会话中的图所在的 Schema 路径。若想将不在当前会话中的 Schema 中的图设置为当前会话的图,则需指定对应 Schema 路径。 路径区分大小写,必须与现有的 Schema 路径匹配。绝对路径或相对路径均可在命令中使用。您可以使用 [CREATE SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/schema/create/) 创建 Schema。关于查看当前会话 Schema 的更多信息,请参见 [SHOW CURRENT_SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-current-schema/)。 Note 为当前会话设置 Schema 或图时,当前用户必须通过隐式访问规则或显式`USAGE`授权获得目标 Schema 或图所属 Schema 的访问权。所有用户都隐式拥有`/default_schema`的访问权。该要求不适用于临时图。更多信息,请参见 [Schema 访问控制](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/schema-access-control/)。 ### `graph_name` 为当前会话设置的图的名称。若在 DQL 语句中未使用 [USE 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/use-graph/)指定工作图,所设置的图将作为工作图使用。有关创建和查看所有图的信息,请参见 [CREATE GRAPH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph/create/) 和 [SHOW GRAPHS](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-graphs/)。 - 如未为当前会话设置图,但已为当前用户设置主图,则当前会话的图为当前用户的主图。此时,若在查询中未使用 [USE 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/use-graph/)指定工作图,所设置的主图将作为工作图使用。 - 如未为当前会话设置图,且未为当前用户设置主图,则当前会话的图为空。此时,必须在每个查询中使用 [USE 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/use-graph/)指定工作图。 ### `temp_graph_name` 为当前会话设置的临时图的名称。必须以井号(`#`)开头。若在 DQL 语句中未使用 [USE 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/use-graph/)指定工作图,所设置的临时图将作为工作图使用。有关创建和查看临时图的信息,请参见 [CREATE TEMPORARY GRAPH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-projection/create/) 和 [SHOW GRAPHS](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-graphs/)。 - 如未为当前会话设置临时图,但已为当前用户设置主图,则当前会话的图为当前用户的主图。此时,若在查询中未使用 [USE 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/use-graph/)指定工作图,所设置的主图将作为工作图使用。 - 如未为当前会话设置临时图,且未为当前用户设置主图,则当前会话的图为空。此时,必须在每个查询中使用 [USE 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/use-graph/)指定工作图。 ### `parameter_name` 为当前会话的查询设置的参数名称。`parameter_name`必须是以美元符号($)为前缀的标识符。有关标识符的更多信息,请参见[标识符命名规则](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/keywords-identifiers/)。 关于执行参数的更多信息,请参见[配置参数](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/executions/parameters/)。 ### `value_expression` 为当前会话设置的参数取值。`value_expression`必须是不依赖于任何变量的表达式。 ## 示例 以下示例基于[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/)。 ### 设置 Schema ```` ''' // 创建一个 Schema CREATE SCHEMA IF NOT EXISTS /my_schema ''' ''' // 为当前会话设置 Schema SESSION SET SCHEMA /my_schema ''' ```` ### 将当前 Schema 中的图设置为当前会话的图 ```` ''' // 创建一个图类型 CREATE GRAPH TYPE IF NOT EXISTS my_graph_type AS {} ''' ''' // 创建一个图 CREATE GRAPH IF NOT EXISTS my_graph TYPED my_graph_type ''' ''' // 为当前会话设置图 SESSION SET GRAPH my_graph ''' ```` ### 将指定 Schema 中的图设置为当前会话的图 ```` ''' // 创建一个图类型 CREATE GRAPH TYPE IF NOT EXISTS my_graph_type AS {} ''' ''' // 创建一个图 CREATE GRAPH IF NOT EXISTS my_graph TYPED my_graph_type ''' ''' // 创建一个 Schema CREATE SCHEMA IF NOT EXISTS /my_schema ''' ''' // 为当前会话设置 Schema SESSION SET SCHEMA /my_schema ''' ''' // 为当前会话设置图 SESSION SET GRAPH /default_schema/my_graph ''' ```` ### 设置临时图 ```` ''' // 基于现有图创建临时图 CREATE TEMPORARY GRAPH IF NOT EXISTS #movie_temporary_graph AS COPY OF movie ''' ''' // 为当前会话设置临时图 SESSION SET GRAPH #movie_temporary_graph ''' ```` ### 设置多个参数 ```` SESSION SET VALUE $i_1 = 10, $i_2 = 20 ```` 参数`$i_1`和`$i_2`分别被设置为`10`和`20`。在当前会话的后续查询中,可以使用这些参数。更多信息,请参见[使用会话参数](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/executions/parameters/)。