SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » PostgreSQL » Сделать 2 поля уникальными, для определённого значения одного из них.
Сделать 2 поля уникальными, для определённого значения одного из них. [сообщение #1874] Mon, 20 March 2023 15:00 Переход к следующему сообщению
polin11 в настоящее время не в онлайне  polin11
Сообщений: 6
Зарегистрирован: January 2023
Junior Member
Использую PGSQL. Есть таблица

CREATE TABLE forms (
    id serial PRIMARY KEY,
    account INT NOT NULL,
    author text,
    type INT NOT NULL
);
INSERT INTO  forms(account, author, type) VALUES 
(1, 'Иванов', 11),
(2, 'Сидоров', 11),
(3, 'Сергеев', 12)
Нужно сделать набор полей (account, type) уникальным только для type = 11.
Например обе записи нельзя было бы вставить, так как type = 11
(1, 'Иванов', 11),
(1, 'Сидоров', 11)
а например, записи можно было обе вставить, так как type != 11.
(1, 'Иванов', 12),
(1, 'Сидоров', 12)

Как это можно сделать в PGSQL?
Re: Сделать 2 поля уникальными, для определённого значения одного из них. [сообщение #1876 является ответом на сообщение #1874] Mon, 20 March 2023 15:51 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 770
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
не бывает "частичной уникальности".
задачу нужно переформулировать иначе.
тут сейчас насоветуют реализовать всё на триггерах, но это хрень, ибо transactionally dependent.
Re: Сделать 2 поля уникальными, для определённого значения одного из них. [сообщение #1900 является ответом на сообщение #1874] Sun, 26 March 2023 14:32 Переход к предыдущему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 328
Зарегистрирован: August 2022
Senior Member
Разгони по разным таблицам наследованием.
Предыдущая тема: Операции над массивами
Следующая тема: Логика работы SELECT FOR UPDATE
Переход к форуму:
  


Текущее время: Fri Mar 29 15:09:45 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00665 секунд