Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / unique constraint / 9 сообщений из 9, страница 1 из 1
10.12.2018, 18:16
    #39745542
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
Код: plsql
1.
2.
3.
4.
insert into BRSContrKind2PrintForms (formcode, opercode, contractkind)
select max(formcode) + 1 as formcode, opercode, 17005000 from BRSContrKind2PrintForms 
where contractkind = 17005004
group by opercode, contractkind



временами возникает ошибка из-за max(formcode)
подскажите как можно переделать запрос, чтобы ошибка не возникала.
formcode должен браться максимальный + 1
а opercode должен браться из строки contractkind = 17005004
...
Рейтинг: 0 / 0
10.12.2018, 18:17
    #39745543
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
RTFM sequence
...
Рейтинг: 0 / 0
10.12.2018, 20:16
    #39745618
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
elimpion,

сначала заблокировать строку с max(formcode), потом инсерт

зы
с помощью merge не уверен что получится

.....
stax
...
Рейтинг: 0 / 0
10.12.2018, 20:52
    #39745629
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
Staxсначала заблокировать строку с max(formcode), потом инсерт , потом перехват dup_val_on_index и повтор операции.
...
Рейтинг: 0 / 0
10.12.2018, 21:11
    #39745632
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
-2-Staxсначала заблокировать строку с max(formcode), потом инсерт , потом перехват dup_val_on_index и повтор операции.
План пригоден при невысокой конкуренции.
...
Рейтинг: 0 / 0
10.12.2018, 22:33
    #39745649
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
andrey_anonymous-2-пропущено...
, потом перехват dup_val_on_index и повтор операции.
План пригоден при невысокой конкуренции.это про блокировку или про дуп_вал?
...
Рейтинг: 0 / 0
11.12.2018, 23:39
    #39746334
posix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
elimpion,
elimpionmax(formcode) + 1 as formcode

Elic уже посоветовал вам использовать встроенные последовательности-сиквенсы(через триггер или через IDENTITY, при создании таблицы), для автозаполнения колонки.
Все остальное, как думаю, велосипед.
Даже в самых крайних случаях(получения id до вставки данных), используют селект из сиквенса.
...
Рейтинг: 0 / 0
11.12.2018, 23:54
    #39746336
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
elimpionподскажите как можно переделать запрос, чтобы ошибка не возникала.GUID юзайте.
...
Рейтинг: 0 / 0
12.12.2018, 09:50
    #39746452
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unique constraint
posixelimpion,
elimpionmax(formcode) + 1 as formcode
Все остальное, как думаю, велосипед.


велосипед изобрели архитекторы, и с етим надо как-то работать

opercode не уникальный
при использовании последовательности придется перейти на сквозную номерацию для opercode

я б заблокировал строки, и для них увеличил formcode

зы
зациклить до исчезновения dup_val_on_index (я б так не делал)

.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / unique constraint / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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