【问题标题】:Using multiple unique constraints in one postgresql table在一个 postgresql 表中使用多个唯一约束
【发布时间】:2020-10-21 10:22:22
【问题描述】:

如果其中两列在其他位置不包含相同的数据,我正在尝试编写一个向我的 postgreSQL 表添加一行的命令。 user_idvenue_id 都不需要是唯一的,但是我不想添加与前一行具有相同 user_idvenue_id 的新行。

我的桌子

id user_id venue_id like dislike
1   1        1       1    0
2   1        2       0    0
3   2        2       1    1

目前我正在尝试

INSERT INTO user_matches (user_id, venue_id) VALUES (1,1) ON CONFLICT DO NOTHING;

【问题讨论】:

    标签: sql node.js postgresql


    【解决方案1】:

    您只需要两列上的唯一索引/约束:

    alter table user_matches add constraint unq_user_matches_user_venue
        unique (user_id, venue_id);
    

    然后您可以将此约束用于on conflict

    【讨论】:

    • Lindoff,这似乎适用于单个条目,但是我使用多输入语句 INSERT INTO user_matches (user_id, venue_id) VALUES (1, 10), (1,20), (1,3);,并且我不希望我的整个查询在只有一个条目重复时失败。
    • @tdammon 。 . .这就是你使用on conflict ignore的原因。
    猜你喜欢
    • 2015-07-21
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 2011-03-25
    相关资源
    最近更新 更多