В Postgresql сила уникальна для комбинации двух столбцов
Я хотел бы настроить таблицу в postgresql так, чтобы два столбца вместе были уникальными. Может быть несколько значений любого значения, если нет двух, которые разделяют оба.
например:
CREATE TABLE someTable (
id int PRIMARY KEY AUTOINCREMENT,
col1 int NOT NULL,
col2 int NOT NULL
)
и col1
и col2
можно повторить, но не в то же время. Таким образом, это будет разрешено (не включая id)
1 1
1 2
2 1
2 2
но не этот:
1 1
1 2
1 1 -- would reject this insert for violating constraints
3 ответов
CREATE TABLE someTable (
id serial primary key,
col1 int NOT NULL,
col2 int NOT NULL,
unique (col1, col2)
)
autoincrement
не является postgresql. Вы хотите serial
.
если col1 и col2 делают уникальный и не может быть нулевым, то они делают хороший первичный ключ:
CREATE TABLE someTable (
col1 int NOT NULL,
col2 int NOT NULL,
primary key (col1, col2)
)
создайте уникальное ограничение, что два числа вместе не могут быть повторены вместе:
ALTER TABLE someTable
ADD UNIQUE (col1, col2)
похоже на регулярное уникальное ограничение:)
CREATE TABLE example (
a integer,
b integer,
c integer,
UNIQUE (a, c));
больше здесь