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.

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>.


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);

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.