我有一个表table1
,其中有2列user_name
和book_name
。
现在,我要插入条目,以使同一用户在另一个条目中不能使用相同的书名。
我正试图做:
INSERT INTO table1(user_name, book_name) VALUES('random_user', 'random_book')
ON CONFLICT (user_name, book_name ) DO NOTHING;
但这会返回我Postgres错误42P10。
此外,我想知道如何在一个表中输入条目,其中一列可能是相同的,而其他列应该是不同的。例如,具有三个字段user_name
,book_name
,quantity
的表,只有数量不同的用户才能在同一条目中拥有同一本书。
答案 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或更高版本。