powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Unique Constraint: почему такая странная проблема и как решать?
14 сообщений из 14, страница 1 из 1
Unique Constraint: почему такая странная проблема и как решать?
    #39303384
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне казалось, что это должно делаться, ан нет:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create table employees
(id uuid not null default uuid_generate_v4() primary key,
name text,
ordinality integer,
UNIQUE (ordinality)
)

insert into employees(name,ordinality)
values('vovka',1),('sergay',2)

select * from employees

update employees set ordinality=ordinality+1;
-----------------------
duplicate key value violates unique constraint "employees_ordinality_key"
DETAIL:  Key (ordinality)=(2) already exists.



Как решать такие проблемы?
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39303395
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

RTFM, люк, read the fucking manual :
https://www.postgresql.org/docs/current/static/sql-createtable.html

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table employees
(id  serial primary key,
name text,
ordinality integer,
UNIQUE (ordinality) DEFERRABLE
)
;
insert into employees(name,ordinality)
values('vovka',1),('sergay',2)
;
select * from employees
;
update employees set ordinality=ordinality+1;

...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39303397
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, заодно:

как изменить или на худой конец удалить безымянный
UNIQUE (ordinality)

?
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39303398
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

посмотреть , какое у него получилось имя, люк.
в системном, или приблудами, которые умеют там смотреть за вас.

оно таки не безымянное, а "именуемое по умолчанию".
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39303399
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqРолг Хупин,

посмотреть , какое у него получилось имя, люк.
в системном, или приблудами, которые умеют там смотреть за вас.

оно таки не безымянное, а "именуемое по умолчанию".

хых
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39303509
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq
Код: sql
1.
2.
3.
4.
5.
6.
create table employees
(id  serial primary key,
name text,
ordinality integer,
UNIQUE (ordinality) DEFERRABLE
);



Но учтите, что у DEFERRABLE есть и подкол:
Код: sql
1.
2.
3.
4.
create table empref (
id  serial primary key,
ordinality integer REFERENCES employees(ordinality)
);


ERROR: cannot use a deferrable unique constraint for referenced table "employees"
Описано в том же TFM, кстати.
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39303645
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3qwwq
Код: sql
1.
2.
3.
4.
5.
6.
create table employees
(id  serial primary key,
name text,
ordinality integer,
UNIQUE (ordinality) DEFERRABLE
);



Но учтите, что у DEFERRABLE есть и подкол:
Код: sql
1.
2.
3.
4.
create table empref (
id  serial primary key,
ordinality integer REFERENCES employees(ordinality)
);


ERROR: cannot use a deferrable unique constraint for referenced table "employees"
Описано в том же TFM, кстати.


и как решать проблему в таком случае?
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39303747
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинPgSQLanonymous3пропущено...


Но учтите, что у DEFERRABLE есть и подкол:
Код: sql
1.
2.
3.
4.
create table empref (
id  serial primary key,
ordinality integer REFERENCES employees(ordinality)
);


ERROR: cannot use a deferrable unique constraint for referenced table "employees"
Описано в том же TFM, кстати.


и как решать проблему в таком случае?

Никак. Идея обновлять unique поле для всех записей оптом (и даже больше чем по 1 записи за раз) - признак проблемы в архитектуре приложения.
(
- Доктор, когда я вот вот так вот делаю у меня болит..((

- А вы вот вот так вот не делайте ))))
).


--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39304074
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупини как решать проблему в таком случае?
1. Курсором.
2. Склеить из DELETE RETURNING -> TEMP TABLE -> INSERT.

Maxim BogukНикак. Идея обновлять unique поле для всех записей оптом (и даже больше чем по 1 записи за раз) - признак проблемы в архитектуре приложения.

Ну мало ли что у человека случилось... Однократно-то можно. ;)
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39304128
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3Ролг Хупини как решать проблему в таком случае?

2. Склеить из DELETE RETURNING -> TEMP TABLE -> INSERT.

какой случай проблемы с ФК решил дон эдак порешить ?
on delete restrict ?
on delete set default ?
on delete cascade ?

и чо, даже без differable на fk ?
таки дон знает толк в извращениях
хотя мало ли в бразилии донов


ЗЫ : сдаётся, перебор with recursive может помочь, не проверял
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39304225
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqкакой случай проблемы с ФК решил дон эдак порешить ?
on delete restrict ?
on delete set default ?
on delete cascade ?

NO ACTION, конечно. В других случаях см. рис. вариант №1.

qwwqи чо, даже без differable на fk ?

Конечно, с DEFERRABLE.
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39304356
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukРолг Хупинпропущено...



и как решать проблему в таком случае?

Никак. Идея обновлять unique поле для всех записей оптом (и даже больше чем по 1 записи за раз) - признак проблемы в архитектуре приложения.
(
- Доктор, когда я вот вот так вот делаю у меня болит..((

- А вы вот вот так вот не делайте ))))
).


--
Maxim Boguk
www.postgresql-consulting.ru

Это хороший ответ, но жизнь диктует свои правила ;-)
и часто приходится делать то, что некомфортно.
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39304380
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинжизнь диктует свои правилаВторичный ключ оправдан для естественного ключа. Но зачем ссылаться на него при одновременном использовании суррогатного? Что делать со связями при обновлении?
...
Рейтинг: 0 / 0
Unique Constraint: почему такая странная проблема и как решать?
    #39304466
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.Ролг Хупинжизнь диктует свои правилаВторичный ключ оправдан для естественного ключа. Но зачем ссылаться на него при одновременном использовании суррогатного? Что делать со связями при обновлении?
оне жеж очередь перетасовываюд:

стояла очередь из вовок и серёг, подошёл блатной борух марковитч -- они всех сдвигают.
...а номерам очереди назначены свои клерки--обработчики.
чтобы, значиццо, главный клерк блатного клаента облизывал без вариантов.
но вместо того, чтобы очередь ссылалась на клерка, клерк ссылается на очередь.
и вот всё у них так.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Unique Constraint: почему такая странная проблема и как решать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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