postgresql CREATE DATABASE能否可靠地覆盖lc_monetary?

uz75evzq  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(99)

Postgres有一个MONEY数据类型。根据https://www.postgresql.org/docs/current/datatype-money.html,这是一种定点十进制数据类型,小数位数由一个名为lc_monetary的变量确定。
关于这个变量的大部分讨论,例如。https://pgpedia.info/l/lc_monetary.html是由一个名为initdb的程序设置的。
作为一名应用程序程序员,我可以合理地假设我是发出CREATE DATABASE命令的人。但我可能不是那个运行initdb的人。当我的代码开始运行时,其他人可能已经这样做了,我没有办法控制他们对它做了什么。
如果有一种方法可以在CREATE DATABASE的时候覆盖这个变量,那就太好了。但它不在https://www.postgresql.org/docs/current/sql-createdatabase.html的选项列表中
另一方面,https://www.postgresql.org/docs/current/locale.html表明它可能是。(虽然它只涉及金额的格式。定点运算也需要调整。但也许这只是措辞上的一点不精确。)
实际上,CREATE DATABASE是否可以覆盖lc_monetary,以便始终正确工作,而不管对initdb做了什么?

jv2fixgn

jv2fixgn1#

这很容易使用ALTER DATABASE。例如:

CREATE DATABASE mumble;
ALTER DATABASE mumble SET lc_monetary = 'en_GB.utf8';

相关问题