Как вставить отдельные и полуразличные записи в таблицу? - PullRequest
1 голос
/ 08 июля 2019

У меня есть таблица 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, в которой пользователь может иметь одну и ту же книгу в разных записях, только если ее количество отличается.

1 Ответ

1 голос
/ 08 июля 2019

Вам, вероятно, просто нужно определить уникальное ограничение или индекс:

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;

Здесь - это db <> скрипка.

Конечно, это предполагает, чтовы используете Postgres 9.5 или новее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...