[英]How to trigger a "UNIQUE" contraint on a column depending on the data value in PostgreSQL 12?
我有一個名為“節點”的表和一個名為“標題”的列,其中當前包含多個重復值。
我的需要是對於一個特定的值模式:'IA-%',觸發一個 UNIQUE 約束,這樣我就不能有例如兩行具有這個值'IA-1234'
我不希望整個列是唯一的,因為在此列中我不需要唯一的其他值,我只需要這個特定模式(或多個識別模式)。
是否有可能,如果可以,如何進行?
謝謝
UNIQUE 約束是使用唯一索引實現的。
可以創建僅適用於由 WHERE 表達式定義的表的子集的部分索引。 實際上,部分唯一索引是文檔中的示例之一,示例 11-3:
CREATE TABLE tests (
subject text,
target text,
success boolean,
...
);
CREATE UNIQUE INDEX tests_success_constraint ON tests (subject, target)
WHERE success;
問題的模式是一個 LIKE 模式,它匹配以IA-
開頭的每個字符串,因此等效的部分索引將是:
CREATE UNIQUE INDEX tests_partial_constraint ON tests (field1)
WHERE field1 LIKE 'IA-%';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.