簡體   English   中英

文本數組中的Postgres檢查約束以確保值的有效性

[英]Postgres check constraint in text array for the validity of the values

我想創建類似的東西

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

這里的scopes是表中的一個字段,它是text[] ,我想確保此數組中的所有值都是上述值之一。 有什么意見嗎? 還有可能通過另一個表的SELECT獲取這些值嗎?

我已經看到了以下解決方案,但我很好奇是否有一個更簡單的解決方案。

使用函數對數組中所有單個元素的PostgreSQL檢查約束

演示:分貝<>小提琴

使用<@運算符

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

不知道確切的用例,但我希望有一個更規范的解決方案:將這四個操作放入一個單獨的表中,該表可以更新。 然后,您可以使用外鍵而不是檢查約束。 如果必須更新這四個關鍵字,則無需更改表DDL,而只需更改外部表中的值即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM