gpt4 book ai didi

sql - 文本数组中的 Postgres 检查约束值的有效性

转载 作者:行者123 更新时间:2023-11-29 11:57:56 25 4
gpt4 key购买 nike

我想创建类似的东西

CHECK (ALL(scopes) IN ('read', 'write', 'delete', 'update'))

scopes 这是表中的一个字段,它是 text[] 我想确保这个数组中的所有值都是上面的值之一。对此有何看法?还有可能通过 SELECT 从另一个表中获取这些值吗?

我看到了下面的解决方案,但我很好奇是否有更简单的解决方案。

Postgresql check constraint on all individual elements in array using function

最佳答案

demo:db<>fiddle

使用 <@ operator :

CHECK(scopes <@ ARRAY['read', 'write', 'delete', 'update'])

不知道您的确切用例,但我更喜欢更规范化的解决方案:将四个操作放入一个可以更新的单独表中。然后你可以使用外键而不是检查约束。如果必须更新这四个关键字,则不需要更改表 DDL,只需更改外部表中的值即可。

关于sql - 文本数组中的 Postgres 检查约束值的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57111636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com