PostgreSQL:不指定数字精度的优点和缺点

A. *_* W. 6 sql postgresql database-design

在 PostgreSQL 10 中,我正在创建一个包含数字列的表。我知道此列中的值必须精确,但我不确定最终值的确切大小是多少。

value NUMERIC
Run Code Online (Sandbox Code Playgroud)

value NUMERIC(20, 2)
Run Code Online (Sandbox Code Playgroud)

与指定任意大的精度相比,不指定精度有何优点或缺点?

Nic*_*ick 7

指定精度会对数据产生两种影响:

  1. 对值进行四舍五入:

    SELECT 100.005::NUMERIC(20,2) -- 100.01

  2. 如果您的值太大,则会引发错误:

    SELECT 100.005::NUMERIC(3,2) -- ERROR: numeric field overflow

就最佳实践而言 - 我认为这取决于数据的性质。不过,很多时候,明确的比隐含的要好。