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

же строчку

23 ответов

22 просмотра

Можно

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
Повышается, но он есть. Ну и если у тебя чтобы обе...

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

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта