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

Код: 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
04.09.2016, 17:18
    #39303395
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique Constraint: почему такая странная проблема и как решать?
Ролг Хупин,

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
04.09.2016, 17:28
    #39303397
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique Constraint: почему такая странная проблема и как решать?
спасибо, заодно:

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

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

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

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

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

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

хых
...
Рейтинг: 0 / 0
05.09.2016, 00:40
    #39303509
PgSQLanonymous3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique Constraint: почему такая странная проблема и как решать?
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
05.09.2016, 10:32
    #39303645
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique Constraint: почему такая странная проблема и как решать?
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
05.09.2016, 12:07
    #39303747
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique Constraint: почему такая странная проблема и как решать?
Ролг Хупин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
05.09.2016, 21:37
    #39304074
PgSQLanonymous3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Unique Constraint: почему такая странная проблема и как решать?
Ролг Хупини как решать проблему в таком случае?
1. Курсором.
2. Склеить из DELETE RETURNING -> TEMP TABLE -> INSERT.

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

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

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

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

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


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

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

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

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



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

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

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


--
Maxim Boguk
www.postgresql-consulting.ru

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

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


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