向数据库添加用户自定义操作是一个两步过程

  1. 定义函数或过程
  2. 向作业调度器注册操作

要创建操作,请首先定义您希望数据库执行的函数过程

您的函数需要包含在 CREATE 语句中。您也可以使用 CREATE OR REPLACE,尽管不建议这样做。此语句还允许您在此语句中定义命令的语言。用户自定义操作可以使用您选择的任何语言编写。本指南使用 SQL 过程语言 PL/pgSQL

此示例定义了一个简单的过程,用于引发通知

CREATE PROCEDURE user_defined_action(job_id INT, config JSONB)
LANGUAGE PLPGSQL AS
$$
BEGIN
RAISE NOTICE 'Executing job % with config %', job_id, config;
END
$$;

要使作业调度器运行您的操作,您需要注册它。使用 add_job 函数。提供您操作的名称、您希望它运行的计划以及配置的内容。如果您的作业不需要参数,请使用 NULL 配置。

例如

SELECT add_job('user_defined_action', '1h', config => '{"hypertable":"metrics"}');

add_job 调用返回一个 job_id。它将 job_idconfig 存储在 TimescaleDB 目录中。

该操作按照您设置的计划运行。当您通过使用 job_id 调用 run_job 手动启动它时,它也会运行。运行时,job_idconfig 将作为参数传递给过程。

要列出所有当前注册的作业,请查询 timescaledb_information.jobs

SELECT * FROM timescaledb_information.jobs;

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面