|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Здравствуйте! У меня есть таблица с личными сообщениями пользователей, которая содержит следующие поля: `id` int(11) NOT NULL, `date` datetime NOT NULL, `from_id` int(11) NOT NULL, `to_id` int(11) NOT NULL, `text` text NOT NULL Проблема в том, что иногда одинаковые записи добавляются в таблицу несколько раз. Хочу защититься от этого сделав уникальный индекс по полям date, from_id, to_id. Проблема в том, что дата в полностью одинаковых записях может отличаться на несколько секунд и тогда всё равно не получается защититься от дублей подобным образом. Существует ли способ каким-то образом создать уникальный индекс чтобы для поля даты учитывалось значение до минут (без секунд)? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 13:34 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Создайте вычисляемое поле (generated column) и используйте его в индексе. Вот только между 12:23:59 и 12:24:00 - одна секунда, а минуты разные. Так что лучше создайте триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 14:19 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Akina, да, пока только такая идея была, но описанный вами момент с 1 секундой смущает. триггер? Расскажите где почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 14:24 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
MySQL 8.0 Reference Manual / ... / Trigger Syntax and Examples MySQL 8.0 Reference Manual / ... / SIGNAL Statement ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 14:27 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Akina, а можно пример как это можно в моём случае использовать? Не совсем понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 14:29 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Пример . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 14:41 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Akina, большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 14:52 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Может проблема в БД, а фронте, когда юзверь не дождавшись тормозной реакции успевает нажать отправку формы дважды или когда срабатывает повторная отправка по иным причинам? Если так, то лучше блокировать на стороне фронта и не пытаться писать в БД второй раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2020, 23:01 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
lkk, Лучше отследить на клиенте ситуации и исправить такие повторные отправки ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2020, 23:54 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Alex_Ustinov Лучше отследить на клиенте ситуации и исправить такие повторные отправки ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 08:10 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Akina, Да там же уник кей дт+фром достаточно ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 17:11 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Alex_Ustinov уник кей дт+фром достаточно ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 19:21 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Akina Alex_Ustinov уник кей дт+фром достаточно В любом случае послать сообщение руками одному пользователю два раза в секунду это ненормальная ситуация. Не хочется углубляться. Но это больше задача клиента- не отсылать уже отправленное. Я почему то в этом окне не могу отправить - оно у меня закрывается, это так, к примеру ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 21:31 |
|
Защита от дублирования записей
|
|||
---|---|---|---|
#18+
Alex_Ustinov Akina, Да там же уник кей дт+фром достаточно ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 21:33 |
|
|
start [/forum/search_topic.php?author=metton&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 688ms |
total: | 848ms |
0 / 0 |