Ini adalah salah satu dari beberapa alasan PostgreSQL money
ketik tidak digunakan lagi dan harus dihindari
. Anehnya versi yang lebih baru dari dokumentasi yang sama tidak menunjukkan peringatan penghentian tapi saya dan lainnya
tidak setuju dengan itu dan berpikir penggunaannya harus dihentikan.
Jika memungkinkan, ubah skema Anda untuk menggunakan numeric
sebagai gantinya, seperti numeric(17,2)
jika Anda hanya ingin menyimpan sen bilangan bulat, atau sesuatu yang lebih tepat untuk nilai menengah. Anda akan mengalami mimpi buruk saat bekerja dengan money
di HQL, ke titik di mana bahkan Java BigDecimal
class (biasanya digunakan untuk memetakan numeric
bidang) lebih baik meskipun sintaks aritmatikanya sangat canggung.
Saya akan melakukan ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric );
dan lupakan money
tipe ada jika saya jadi Anda.