如何解决Postgres SQL:如何创建约束来检查元素不在字符串数组中
我正在学习约束,但我还没有找到检查值是否在数组中的方法。
这是我的问题:
City
:text
Other_cities
:text
我想说这个城市一定与其他城市不同。 我想看看其他城市都不同
ALTER TABLE address
ADD CONSTRAINT "check cities are different"
CHECK (
City <> Other_cities
);
我猜这段代码是错误的,因为它没有一个一个地检查所有其他城市。
我该怎么办?
解决方法
您可以检查 city
与 other_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 举报,一经查实,本站将立刻删除。