Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/ttl/create/ Documentation version: v5.3.2 # CREATE TTL `CREATE TTL`语句根据图元素类型为图元素设置 TTL(存活时间,全称为 Time-to-live)时长。目前,仅支持为图中的边设置 TTL 时长。 可选择以下任意方法来指定图: - 在本语句前添加 [USE 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/use-graph/)来设定工作图。 - 提前使用 [SESSION SET](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/sessions/set/) 设置当前会话的图。 若两种方法均使用,则以 USE 子句中的指定为准。若均未使用,则报错。 悦数图数据库开发版通过 TTL 机制为图元素设置生命周期。在生命周期到期后,这些图元素将无法在查询中被查到,但它们不会立即从 Storage 服务中删除。实际的删除操作将在下一次 COMPACT 作业中执行。 Note 对非默认 Schema 或其中的对象执行操作时,用户既要通过隐式访问规则或显式`USAGE`授权获得该 Schema 的访问权,也要具备目标操作所需的权限。Schema 访问校验和目标操作所需的权限校验相互独立,满足其中一项不能替代另一项。Schema 访问控制不适用于临时图、内置 Procedure 和内置 Function。更多信息,请参见 [Schema 访问控制](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/schema-access-control/)。 ## 前提条件 - 已创建图,且图中至少有一个边类型的属性的数据类型为`ZONED DATETIME`。更多信息,请参见 [CREATE GRAPH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph/create/)。 - 若要设置 TTL 时长,必须是图的所有者,或具备在图上执行`ALTER`操作的权限,或具备在当前 Schema 执行`ALTER ANY GRAPH`操作的权限。更多信息,请参见[角色与权限](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/)。 ## 限制条件 - TTL 时长只能设置在边类型的属性上,这些属性被称为 TTL 属性。 - 每个边类型只能指定一个 TTL 属性。 - TTL 属性的数据类型必须为`ZONED DATETIME`。 - TTL 时长只能以天、小时、分钟、秒、毫秒或微秒为单位指定。 ## 语法 语法图源码 create_ttl_statement ```` create_ttl_statement ::= 'CREATE' 'TTL' 'ON' 'EDGE' edge_type_name '(' property_name ')' ttl_duration ```` ## 参数 ### `edge_type_name` 待设置 TTL 时长的边类型的名称。 ### `property_name` 待设置 TTL 时长的边类型的属性的名称。该属性的数据类型必须为`ZONED DATETIME`。更多信息,请参见[时间点](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-types/temporal-type/#_3)。 如果该属性的值和`ttl_duration`指定的 TTL 时长相加的时间早于当前时间,则具有此属性的边将被视为已过期,并将在下一次 COMPACT 操作中被删除。 如果属性的值为`NULL`,则具有此属性的边永不过期。 ### `ttl_duration` 指定 TTL 时长的时间段。该时间段取值必须大于 0 并使用函数[`duration()`](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/functions/temporal/#duration)以天、小时、分钟、秒、毫秒或微秒为单位指定。 ## 示例 以下示例基于[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/)。 ### 为边类型设置 TTL 时长 ```` ''' // 为边类型 Watch 添加数据类型为 ZONED DATETIME 的属性 ALTER GRAPH TYPE movie_type { ALTER EDGE TYPE Watch ADD PROPERTIES {ttl_test ZONED DATETIME DEFAULT zoned_datetime("1990-01-01T05:06:07.0890", "%Y-%m-%dT%H:%M:%S") } } ''' ''' // 为边类型 Watch 设置 TTL 时长 USE movie CREATE TTL ON EDGE Watch(ttl_test) duration({days:1, hours:2, minutes:3, seconds:4, milliseconds:5, microseconds:6}) ''' ```` ## 更多信息 [SHOW TTLS](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-ttls/)