微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Postgres SQL:如何创建约束来检查元素不在字符串数组中

如何解决Postgres SQL:如何创建约束来检查元素不在字符串数组中

我正在学习约束,但我还没有找到检查值是否在数组中的方法

这是我的问题:

Citytext
Other_citiestext

数组

我想说这个城市一定与其他城市不同。 我想看看其他城市都不同

ALTER TABLE address 
            ADD CONSTRAINT  "check cities are different"
            CHECK (
            City <> Other_cities
            );

我猜这段代码错误的,因为它没有一个一个地检查所有其他城市。

我该怎么办?

解决方法

您可以检查 cityother_cities 中的所有值是否不同:

ALTER TABLE address ADD CHECK ((city <> ALL (other_cities)) IS TRUE);

IS TRUE 将处理数组中的 NULL 值。没有它,约束将传递包含 NULL 值的数组,因为检查约束允许测试评估为 NULL 的行。

,

使用 any 检查元素是否在数组中。

test=> select not 'Moose Factory' = any( array['Moose Factory','Walla Walla'] );
 ?column? 
----------
 f
(1 row)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。