Di PostgreSQL, Anda dapat menggunakan pg_sleep()
berfungsi untuk menunda eksekusi selama beberapa detik.
Itu membuat proses sesi saat ini tidur sampai jumlah detik yang ditentukan telah berlalu. Ini bekerja mirip dengan sleep()
MySQL fungsi, dan juga waitfor
TSQL pernyataan di SQL Server.
pg_sleep()
fungsi menerima presisi ganda argumen, sehingga Anda juga dapat menentukan penundaan sepersekian detik.
Penundaan tidur akan setidaknya selama yang ditentukan. Namun, ini bisa lebih lama bergantung pada faktor-faktor seperti beban server, serta resolusi efektif interval tidur platform Anda.
Sintaks
Sintaksnya cukup sederhana:
pg_sleep(seconds)
Dimana seconds
adalah presisi ganda nilai yang menentukan berapa detik/detik pecahan harus berlalu sebelum proses berlanjut.
Contoh
Berikut ini contoh untuk mendemonstrasikan penggunaannya.
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
Hasil (menggunakan keluaran vertikal):
clock_timestamp | 2020-06-28 13:46:53.808072+10 pg_sleep | clock_timestamp | 2020-06-28 13:46:54.870423+10 pg_sleep | clock_timestamp | 2020-06-28 13:46:55.938278+10
Saya menggunakan clock_timestamp()
dalam contoh ini, karena berubah selama eksekusi pernyataan. Hal ini memungkinkan kami untuk melihat nilai yang diperbarui seiring perkembangan pernyataan.
Saya menggunakan tampilan yang diperluas (kadang-kadang disebut sebagai "output vertikal") dalam contoh ini untuk memudahkan melihat hasilnya.
Anda dapat mengaktifkan tampilan yang diperluas di psql dengan menggunakan \x
.
Detik Pecahan
Seperti yang disebutkan, Anda dapat menentukan penundaan sepersekian detik jika diperlukan.
SELECT
clock_timestamp(),
pg_sleep(.5),
clock_timestamp(),
pg_sleep(.5),
clock_timestamp();
Hasil (menggunakan keluaran vertikal):
clock_timestamp | 2020-06-28 15:03:52.496211+10 pg_sleep | clock_timestamp | 2020-06-28 15:03:53.041063+10 pg_sleep | clock_timestamp | 2020-06-28 15:03:53.553291+10
Nilai Negatif
Nilai negatif tidak akan menyebabkan penundaan eksekusi.
SELECT
clock_timestamp(),
pg_sleep(-1),
clock_timestamp(),
pg_sleep(-1),
clock_timestamp();
Hasil (menggunakan keluaran vertikal):
clock_timestamp | 2020-06-29 09:03:19.056681+10 pg_sleep | clock_timestamp | 2020-06-29 09:03:19.056682+10 pg_sleep | clock_timestamp | 2020-06-29 09:03:19.056683+10