【问题标题】:INSERT into PostgreSQL table with unique columns and non-null插入具有唯一列且非空的 PostgreSQL 表
【发布时间】:2022-02-15 19:45:02
【问题描述】:

我有一个现有的表,我想对其进行更改,以便如果 col3 具有非空值,则 col1 和 col2 必须是唯一的。

因此在以下示例中,最后一行应该无法插入,因为第 4 行具有相同的 col1 和 col2 值以及非空 col3 值。

col1 col2 col3
matt 234
matt 234
matt 237 banana
matt 234 apple
matt 234
matt 234 pear

那么我该如何改变我的表来解释 col3 的非空值呢? 这就是我现在所拥有的一切。

ALTER TABLE someTable
ADD UNIQUE (col1, col2)

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    PostgreSQL 没有UNIQUE 条件约束,但是你可以尝试使用Partial Indexes 并添加UNIQUE

    CREATE UNIQUE INDEX someTable_unique_col1_col2 ON someTable(col1, col2)
    WHERE col3 IS NOT NULL
    

    sqfiddle

    【讨论】:

    • 非常感谢!这是完美的。
    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 2013-01-05
    • 2011-03-18
    • 2011-04-29
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多