Можно ли заблокировать условие вставки? чтобы параллельная транзакция не вставила такую

же строчку

23 ответов

19 просмотров

Можно

RAFIZ- Автор вопроса
Ilya Zviagin
Можно

расскажите, плес

RAFIZ
расскажите, плес

Называется уникальный индекс, Погугли

RAFIZ- Автор вопроса
RAFIZ
а кроме этого способа?

А зачем что-то кроме этого? СУБД устроены логично и в них для обеспечения одной функциональности обычно используют одно средство а не 10

RAFIZ- Автор вопроса
Ilya Zviagin
А зачем что-то кроме этого? СУБД устроены логично ...

а самый строгий уровень изоляции транзакций не поможет добиться этой цели?

RAFIZ- Автор вопроса
RAFIZ
а самый строгий уровень изоляции транзакций не пом...

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

RAFIZ- Автор вопроса
RAFIZ
две параллельные вставки сначала проверяют что стр...

я сейчас не говорю про самый эффективный способ. но просто: так можно?

RAFIZ
а самый строгий уровень изоляции транзакций не пом...

Для того чтобы уровень изоляции позволял достигать этой цели тебе нужно как-то оформить в базе данных какое-то правило, какой-то конфликт который бы изоляция транзакций могла разрешать А тут у тебя никакого правила не подразумевается в запросе. Но даже если бы было правило к сожалению уровень serializable не всегда будет защищать от всех конфликтов, он теоретически Это должен делать, но не обязан. Кстати правилом должен был бы быть тот же самый уникальный ключ

RAFIZ- Автор вопроса
Ilya Zviagin
Называется уникальный индекс, Погугли

у меня колонка varchar(1024) и попытка включить его в комбинированный уникальный ключ выдаёт Error Code: 1071. Specified key was too long; max key length is 3072 bytes версия 8.0

RAFIZ
у меня колонка varchar(1024) и попытка включить ег...

Ну не надо делать такие длинные поля уникальными

RAFIZ- Автор вопроса
Ilya Zviagin
Ну не надо делать такие длинные поля уникальными

если с текущим видом поля никак эту задачу не решить, то придётся менять, да.

RAFIZ- Автор вопроса
Ilya Zviagin
Ну не надо делать такие длинные поля уникальными

в 8.1.0 нельзя такие длинные поля делать уникальными?

RAFIZ- Автор вопроса
RAFIZ
в 8.1.0 нельзя такие длинные поля делать уникальны...

потому что насколько знаю лимит от версии к версии повышался как минимум однажды

RAFIZ- Автор вопроса
Ilya Zviagin
Везде нельзя

а если уменьшить длину varchar, то имеющиеся уже данные останутся в том же виде?

RAFIZ
потому что насколько знаю лимит от версии к версии...

Повышается, но он есть. Ну и если у тебя чтобы обеспечить уникальность нужно такое длинное поле это ОЧЕНЬ странно. Это видимо попытка построить естественный ключ на пользовательских данных.

RAFIZ
а если уменьшить длину varchar, то имеющиеся уже д...

Учти ещё , что varchar в байтах, а строки - в символах.

RAFIZ- Автор вопроса
Ilya Zviagin
Повышается, но он есть. Ну и если у тебя чтобы обе...

да, потому что вставки должны быть уникальны по нескольким характеристикам этих пользователей это вылилось в уникальный ключ по соотв. полям в базе. как иначе делать — хз какие-то хэшы по этим характеристикам могут привести к коллизиям, тогда уникальности не добиваемся

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

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

Как думаете через какой сервис они верифицируют?
inc.
5
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
🙋 Ребята, всем привет. Поправил задачу: Нужно каждому новому сообщению (1 раз по каждому юзеру) в чате прибавлять снизу кнопку с предложением подписаться на канал. Как добавит...
Alexander
1
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Карта сайта