はじめに
やりたかったことは例えば1週間に1回とか、1日に1回など、定期的にDBに処理を加えるファンクションです。
やり方
デフォルトの機能だけでは実現できなかったので、extensionを使います。
extensionを入れる
Databaseから追加したいTabelを選択し、Extensionsタブを開きます。
検索窓があるので、そこにcronと打ち込みます。
pg_cronが出てくるので、右側のトグルボタンをクリックして有効化します。
SQLエディターで定期実行するファンクションを作成する
公式ドキュメントをみて作るんですが
大体以下のような書き方です。
select cron.schedule (
'hogehoge', -- ジョブの名前です。適当な名前をつけましょう。
'* * * * *', -- どのタイミングで実現するかをCronの書き方で書きましょう。
$$ delete from events where hogehoge $$ -- ここに実行したい処理を書きましょう。
);
もし、すでに実行するべきファンクションをすでに作っているのなら以下のような書き方です。
select cron.schedule (
'hogehoge', -- ジョブの名前です。適当な名前をつけましょう。
'* * * * *', -- どのタイミングで実現するかをCronの書き方で書きましょう。
'hugahuga' -- ここに実行したい処理の名前を書きましょう。
);
これだけで定期実行できるはず