PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

DENGARKAN/BERITAHU menggunakan pg_notify(teks, teks) di PostgreSQL

Saya telah membahas ini di milis PostgreSQL ( http://archives.postgresql.org/pgsql-bugs/2011-03/msg00041.php ) dan diberitahu tentang alasan perilaku tersebut.

Jawaban mereka adalah bahwa "..Anda harus menggandakan kutipan relnames (dengarkan "Test"). jika Anda ingin server tidak melipatnya. pg_notify mengambil string, bukan arelname, yang menggunakan aturan yang berbeda." (Terima kasih Merlin dan Tom)

Ini berarti bahwa yang berikut ini berfungsi karena saluran selalu dipaksa menjadi huruf kecil

LISTEN ERRORCHANNEL;

NOTIFY ERRORCHANNEL, 'something!';
NOTIFY eRrorChanNel, 'something!';

Jika Anda menambahkan tanda kutip ganda di sekitar nama saluran, kasusnya akan dipertahankan.

Jadi, dengan yang berikut ini, Anda akan menerima pemberitahuan pertama tetapi tidak yang kedua:

LISTEN "ERRORCHANNEL";

NOTIFY "ERRORCHANNEL", 'something!'; 
NOTIFY "eRrorChanNel", 'something!';

Demikian pula, berikut ini akan berfungsi karena tanda kutip ganda memaksa kasus ERRORCHANNEL dipertahankan:

LISTEN "ERRORCHANNEL";

SELECT pg_notify('ERRORCHANNEL', 'something!');

Meskipun ini tidak akan berhasil:

LISTEN ERRORCHANNEL;

SELECT pg_notify('ERRORCHANNEL', 'something!');

Dalam situasi ini ERRORCHANNEL tidak dalam tanda kutip ganda dalam perintah LISTEN sehingga PostgreSQL memaksanya menjadi huruf kecil. Parameter saluran bertipe teks, bukan relname, sehingga case tidak tersentuh dalam fungsi pg_notify(). Bersama-sama saluran tidak cocok (ERRORCHANNE !=errorchannel) sehingga pemberitahuan tidak pernah diterima.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara terbaik untuk mencegah duplikat data pada copy csv postgresql

  2. Kesalahan format tanggal postgresql

  3. Node PostgreSQL waktu habis kueri oleh klien

  4. Bagaimana cara menghapus entri duplikat?

  5. Jumlah SQL bersyarat