172 похожих чатов

Такой вопрос. Есть две талблицы: в одной есть id и

колонка deleted и есть другая таблица у которой есть внешний ключь на id первой талицы и колонка name с уникальным индексом

Суть в том, что хотелось чтобы name проверялось на уникальность, только если в таблице 1 deleted = false

Есть варианты, как это реализовать?

3 ответов

9 просмотров

Только триггером. И будет говно.

regression=# create table hehehe ( id bigserial, name varchar, deleted int default 0 ); CREATE TABLE regression=# create unique index hehehe_name_idx on hehehe ( name ) where ( deleted = 0 ); CREATE INDEX regression=# insert into hehehe ( name ) values ( 'name1' ); INSERT 0 1 regression=# insert into hehehe ( name ) values ( 'name2' ); INSERT 0 1 regression=# insert into hehehe ( name ) values ( 'name3' ); INSERT 0 1 regression=# insert into hehehe ( name ) values ( 'name1' ); ERROR: duplicate key value violates unique constraint "hehehe_name_idx" DETAIL: Key (name)=(name1) already exists. regression=# update hehehe set deleted = 1 where name = 'name1'; UPDATE 1 regression=# insert into hehehe ( name ) values ( 'name1' ); INSERT 0 1 regression=# select * from hehehe; id | name | deleted ----+-------+--------- 2 | name2 | 0 3 | name3 | 0 1 | name1 | 1 5 | name1 | 0 (4 rows)

https://postgrespro.ru/docs/postgresql/12/indexes-partial И денормализовать предварительно. Либо выкинуть лишнюю таблицу совсем, либо поле продублировать.

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
7
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
22
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Карта сайта