Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Уникальность логина в таблице пользователей / 3 сообщений из 3, страница 1 из 1
13.03.2021, 22:31
    #40053232
Elfix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальность логина в таблице пользователей
Добрый день!

Есть таблица users. В этой таблице пользователи могут быть помечены на удаление (признак deleted = True).
Как сделать проверку на уникальность поля login для всех не помеченных на удаление записей?

Например, запись login = 'admin' и deleted = false может быть только одна.
А записей login = 'admin' и deleted = true может быть сколько угодно.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE users
(
    "ID" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
    "login" character varying(100) COLLATE pg_catalog."default" NOT NULL,
    "firstName" character varying(100) COLLATE pg_catalog."default",
    "lastName" character varying(100) COLLATE pg_catalog."default",
    birthday timestamp without time zone,
    
    deleted boolean NOT NULL DEFAULT false,
    CONSTRAINT users_pkey PRIMARY KEY ("ID")
)
...
Рейтинг: 0 / 0
13.03.2021, 22:33
    #40053233
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальность логина в таблице пользователей
Elfix
Добрый день!

Есть таблица users. В этой таблице пользователи могут быть помечены на удаление (признак deleted = True).
Как сделать проверку на уникальность поля login для всех не помеченных на удаление записей?

Например, запись login = 'admin' и deleted = false может быть только одна.
А записей login = 'admin' и deleted = true может быть сколько угодно.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE users
(
    "ID" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
    "login" character varying(100) COLLATE pg_catalog."default" NOT NULL,
    "firstName" character varying(100) COLLATE pg_catalog."default",
    "lastName" character varying(100) COLLATE pg_catalog."default",
    birthday timestamp without time zone,
    
    deleted boolean NOT NULL DEFAULT false,
    CONSTRAINT users_pkey PRIMARY KEY ("ID")
)



create unique index users_active_login_uniq on users(login) where (deleted=false);


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
14.03.2021, 09:54
    #40053271
Elfix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальность логина в таблице пользователей
Большое спасибо!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Уникальность логина в таблице пользователей / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]