Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
26.09.2020, 17:14
|
|||
---|---|---|---|
|
|||
Предотвратить добавление дублей когда выполняются несколько сессий. |
|||
#18+
Привет, что-то затруднился как лучше сделать. Есть запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Когда две сессии начинают выполнять этот код одновременно, одновременно выполняют select и убеждаются что записи с Name = 'Name1' в таблице нет и обе начинают выполнять insert. Но мне не нужны дублирующиеся записи, как лучше сделать чтобы дубли не добавились? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.09.2020, 18:47
|
|||
---|---|---|---|
Предотвратить добавление дублей когда выполняются несколько сессий. |
|||
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Плюс добавить ограничение уникальности по Name. Если только добавить без дальнейших манипуляций, то просто ограничение уникальности по Name с IGNORE_DUP_KEY = ON ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.09.2020, 19:46
|
|||
---|---|---|---|
Предотвратить добавление дублей когда выполняются несколько сессий. |
|||
#18+
rigor mortis Привет, что-то затруднился как лучше сделать. Есть запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Когда две сессии начинают выполнять этот код одновременно, одновременно выполняют select и убеждаются что записи с Name = 'Name1' в таблице нет и обе начинают выполнять insert. Но мне не нужны дублирующиеся записи, как лучше сделать чтобы дубли не добавились? У меня вопросы к показанному нам SQL. Какой результат сравнения @id = null ? А вы-то полагаете, что "записи с Name = 'Name1' в таблице нет"! В каком месте @id инициализируется? C такими ошибками у вас должно быть много проблем и в других местах. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.09.2020, 20:52
|
|||
---|---|---|---|
|
|||
Предотвратить добавление дублей когда выполняются несколько сессий. |
|||
#18+
iap, да, криво написал. здесь должно быть так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Тоже хотел merge, но думал может пооптимальнее есть решение ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.09.2020, 22:35
|
|||
---|---|---|---|
|
|||
Предотвратить добавление дублей когда выполняются несколько сессий. |
|||
#18+
rigor mortis, Проверка-действие, когда не сделаны атомарно, чреваты осложнениями в условиях параллельного исполнения Исходя только из условий что вы описали, я бы сделал так: Объявил таблицу с уникальной колонкой Name.(ключ) Вместо проверки, вставлял бы запись - sql сам проверит на уникальность и не вставит дупликат. Обрабатывал бы ошибку, если интересно что произошло. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=46&mobile=1&tid=1685600]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 142ms |
0 / 0 |