Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сделать 2 поля уникальными, для определённого знач 
:(
    Опции темы
polin11
Дата 20.3.2023, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Использую PGSQL. Есть таблица 

Код

CREATE TABLE forms (
    id serial PRIMARY KEY,
    account INT NOT NULL,
    author text,
    type INT NOT NULL
);
INSERT INTO  forms(account, author, salary) VALUES 
(1, 'Иванов', 11),
(2, 'Сидоров', 11),
(3, 'Сергеев', 12)


Нужно сделать набор полей (account, type) уникальным только для type = 11.
Например обе записи нельзя было бы вставить, так как type = 11

Код

(1, 'Иванов', 11),
(1, 'Сидоров', 11)



а например, записи можно было обе вставить, так как type != 11.
Код

(1, 'Иванов', 12),
(1, 'Сидоров', 12)



Как это можно сделать в PGSQL?
PM MAIL   Вверх
Akina
Дата 20.3.2023, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Код

CREATE UNIQUE INDEX idx ON forms ((CASE WHEN type = 11 THEN type END));

Уникальный индекс разрешает только одну запись с type = 11, но любое число записей с другими значениями type.
fiddle


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1028 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.