Bagaimana saya bisa menampilkan konten pemicu dengan psql?

12

Saya tahu saya bisa membuat daftar pemicu \dft. Tetapi bagaimana saya bisa melihat satu pemicu konkret? Saya ingin mengetahui detail seperti pada peristiwa mana pemicu dieksekusi, fungsi mana yang dieksekusi dan sebagainya.

Mnementh
sumber

Jawaban:

23

Oke, saya mengetahuinya sendiri.

Perintah \dfttidak menunjukkan pemicu itu sendiri (seperti yang saya duga), itu menunjukkan semua fungsi pemicu (pemicu tipe-kembali).

Untuk melihat pemicu yang dapat Anda buat \dS <tablename>, itu tidak hanya menampilkan kolom dari tabel ini, tetapi juga semua pemicu yang ditentukan pada tabel ini.

Untuk menunjukkan sumber fungsi pemicu (atau fungsi apa pun) gunakan \df+ <functionname>.

Mnementh
sumber
1
Gunakan \ ef <function_name> untuk bacaan yang lebih nyaman.
Brain90
7

Jika Anda tidak memiliki akses ke perintah psql, Anda masih dapat menggunakan:

select pg_get_functiondef('functionname'::regproc);
jlfenaux
sumber
2

Anda dapat mencoba yang berikut ini:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers ORDER BY event_object_table,event_manipulation

atau Anda dapat menampilkan pemicu tabel bernama 'testtable' seperti ini:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers WHERE event_object_table='testtable' ORDER BY event_object_table,event_manipulation
gdarcan
sumber