延迟或等待声明

sha*_*dov 20 postgresql sleep wait

我有一个500,000行sql脚本:

update users set region_id = 9814746 where id = 101 and region_id is null;
update users set region_id = 9814731 where id = 102 and region_id is null;
update users set region_id = 3470676 where id = 103 and region_id is null;
Run Code Online (Sandbox Code Playgroud)

我想每50行插入10秒的延迟.pgsql是否有像t-sql这样的waitfor语句.

谢谢.

pil*_*row 39

pgsql是否有像t-sql这样的waitfor语句.

是的,pg_sleep:

pg=> SELECT pg_sleep(10);
 pg_sleep 
----------

(1 row)
Run Code Online (Sandbox Code Playgroud)


Tho*_*ena 9

您可以pg_sleep使用PERFORM语句调用该函数,因为我们不在乎返回值:

PERFORM pg_sleep(10);
Run Code Online (Sandbox Code Playgroud)

  • @dannymo 这应该有效:`DO $$ BEGIN PERFORM pg_sleep(1); 结束 $$;` (3认同)

小智 5

您可以使用pg_sleep()pg_sleep_for()来延迟 10 秒,如下所示,根据延迟执行

SELECT pg_sleep(10);
Run Code Online (Sandbox Code Playgroud)
SELECT pg_sleep_for('10 seconds');
Run Code Online (Sandbox Code Playgroud)
SELECT pg_sleep_for('10 second');
Run Code Online (Sandbox Code Playgroud)

此外,您还可以使用pg_sleep_until()延迟一段时间,如下所示:

SELECT pg_sleep_until('today 21:45');
Run Code Online (Sandbox Code Playgroud)
SELECT pg_sleep_until('tomorrow 03:00');
Run Code Online (Sandbox Code Playgroud)