簡體   English   中英

如何根據 PostgreSQL 12 中的數據值觸發列上的“唯一”約束?

[英]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.

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