我搜索的方式開始在特定的時間(爲了測試併發訪問)一Function
或Transaction
,但我沒有找到一個明確的辦法,我在這裏找到PostgreSQL - make two transactions run at the same time ,在特定的時間內用linux執行腳本的東西,但是如果您使用的是Windows或其他操作系統,這並沒有什麼幫助。PostgreSQL的 - 在特定的時間開始事務
我創建了一個簡單的方法,但我不知道這是否有問題或不:
我創建佔據start-date
,那麼這個功能我用pg_sleep(sleep_time)
來阻止我的行動,直到時間的函數,所以這個想法很簡單:
sleep_time = start_date - current_date
下面是函數:
CREATE OR REPLACE FUNCTION start__my_job_in_specific_time(start_time timestamp) RETURNS INTEGER AS $$
BEGIN
PERFORM pg_sleep((select extract(epoch from (start_time - (SELECT CURRENT_TIMESTAMP)))));
-- now execute my actions
UPDATE sch_lock.table_concurente set max_value = max_value + 1
WHERE id = (SELECT id FROM sch_lock.table_concurente ORDER BY id DESC LIMIT 1);
RETURN (SELECT MAX(max_value) FROM sch_lock.table_concurente);
END;
$$
LANGUAGE plpgsql;
-- start my function at 2017-02-20 12:03:30
SELECT * FROM start__my_job_in_specific_time('2017-02-20 11:03:30');
這項工作很好,並在EXAC交易工作時間。
我的問題:是否有任何類似的方式在postgres比這更好。
還有https://github.com/citusdata/pg_cron項目 –