如何在表中插入不同和半不同的条目?

时间:2019-07-08 15:14:52

标签: sql postgresql insert

我有一个表table1,其中有2列user_namebook_name

现在,我要插入条目,以使同一用户在另一个条目中不能使用相同的书名。

我正试图做:

INSERT INTO table1(user_name, book_name) VALUES('random_user', 'random_book')
ON CONFLICT (user_name, book_name ) DO NOTHING;

但这会返回我Postgres错误42P10。

此外,我想知道如何在一个表中输入条目,其中一列可能是相同的,而其他列应该是不同的。例如,具有三个字段user_namebook_namequantity的表,只有数量不同的用户才能在同一条目中拥有同一本书。

1 个答案:

答案 0 :(得分:1)

您可能只需要定义唯一约束或索引:

create table table1 (
    user_name text,
    book_name text,
    unique (user_name, book_name)
);

INSERT INTO table1(user_name, book_name)
    VALUES('random_user', 'random_book')
    ON CONFLICT (user_name, book_name ) DO NOTHING;

Here是db <>小提琴。

当然,这假定您使用的是Postgres 9.5或更高版本。