Nilai default diuraikan pada waktu pembuatan (pengikatan awal!). Apa yang Anda lihat di psql, pgAdmin atau klien lain adalah representasi teks tetapi, pada kenyataannya, OID dari fungsi now() pada saat membuat kolom default disimpan dalam katalog sistem pg_attrdef
. Saya mengutip:
adbin pg_node_tree The internal representation of the column default value
adsrc text A human-readable representation of the default value
Saat Anda mengubah search_path
, yang menyebabkan Postgres menampilkan nama fungsi yang memenuhi syarat skema, karena itu tidak akan diselesaikan dengan benar lagi dengan search_path saat ini .
Buang dan pulihkan tidak terkait dengan search_path khusus Anda pengaturan. Mereka mengaturnya secara eksplisit. Jadi apa yang Anda lihat tidak terkait dengan siklus dump / restore.
Mengganti fungsi bawaan
Menempatkan public sebelum pg_catalog di search_path adalah permainan bahaya . Pengguna yang kurang beruntung (termasuk Anda sendiri) sering kali diizinkan untuk menulis di sana dan membuat fungsi yang mungkin secara tidak sengaja mengesampingkan fungsi sistem - dengan hasil yang berubah-ubah (atau berbahaya).
Anda menginginkan skema khusus dengan akses terbatas untuk mengganti fungsi bawaan. Gunakan sesuatu seperti ini sebagai gantinya:
SET search_path = override, pg_catalog, public;
Detail dalam jawaban terkait di dba.SE .