PostgreSQL-为JSONB字段元素添加浮动检查约束

时间:2018-09-06 10:07:34

标签: jsonb postgresql-9.6

在普通的RDBMS或ORDBMS中,我可以直接声明具有特定精度和小数位数的十进制/浮点值。 例如:

CREATE TABLE Sample1
(
  ID NUMERIC(5,2)
);

在实现相同的ID(现在是json中的密钥对值)时,我使用了以下方法

CREATE TABLE Sample1
(
  data jsonb,
  CONSTRAINT validate_Sample CHECK( length(data ->> 'ID') <= 8 AND ((data ->> 'ID')::numeric(5,2)) >= 0)
);

尽管它可以正常工作,但是我不确定它的长期使用情况。

我也尝试了以下方法。

CREATE TABLE Sample1
(
  data jsonb,
  CONSTRAINT validate_Sample CHECK(((data ->> 'ID')::numeric(5,2)) >= 0)
);

尽管它限制了我输入超出指定的限制,但并没有限制我输入小数点后的值,例如

for numeric(5,2)
234.54 
234.541
234.192821

(All the above value worked)

While 2341.192821 gives "numeric field overflow" error.

对于numeric(5,2),我只是想将其限制在小数点后2位。请提出。

0 个答案:

没有答案