Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Защита от дублирования записей / 15 сообщений из 15, страница 1 из 1
19.11.2020, 13:34
    #40020350
lkk
lkk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Здравствуйте!

У меня есть таблица с личными сообщениями пользователей, которая содержит следующие поля:

`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. Проблема в том, что дата в полностью одинаковых записях может отличаться на несколько секунд и тогда всё равно не получается защититься от дублей подобным образом. Существует ли способ каким-то образом создать уникальный индекс чтобы для поля даты учитывалось значение до минут (без секунд)?
...
Рейтинг: 0 / 0
19.11.2020, 14:19
    #40020384
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Создайте вычисляемое поле (generated column) и используйте его в индексе.

Вот только между 12:23:59 и 12:24:00 - одна секунда, а минуты разные. Так что лучше создайте триггер.
...
Рейтинг: 0 / 0
19.11.2020, 14:24
    #40020390
lkk
lkk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Akina,

да, пока только такая идея была, но описанный вами момент с 1 секундой смущает.

триггер? Расскажите где почитать?
...
Рейтинг: 0 / 0
19.11.2020, 14:27
    #40020393
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
...
Рейтинг: 0 / 0
19.11.2020, 14:29
    #40020395
lkk
lkk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Akina,

а можно пример как это можно в моём случае использовать? Не совсем понимаю.
...
Рейтинг: 0 / 0
19.11.2020, 14:41
    #40020401
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
...
Рейтинг: 0 / 0
19.11.2020, 14:52
    #40020408
lkk
lkk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Akina, большое спасибо!
...
Рейтинг: 0 / 0
20.11.2020, 23:01
    #40020924
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Может проблема в БД, а фронте, когда юзверь не дождавшись тормозной реакции успевает нажать отправку формы дважды или когда срабатывает повторная отправка по иным причинам?

Если так, то лучше блокировать на стороне фронта и не пытаться писать в БД второй раз.
...
Рейтинг: 0 / 0
22.11.2020, 23:54
    #40021203
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
lkk,

Лучше отследить на клиенте ситуации и исправить такие повторные отправки
...
Рейтинг: 0 / 0
23.11.2020, 08:10
    #40021245
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Alex_Ustinov
Лучше отследить на клиенте ситуации и исправить такие повторные отправки
Я бы сказал - И на клиенте. Проверка на клиенте никак не отменяет необходимости контроля на стороне сервера.
...
Рейтинг: 0 / 0
23.11.2020, 17:11
    #40021470
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Akina,

Да там же уник кей дт+фром достаточно
...
Рейтинг: 0 / 0
23.11.2020, 19:21
    #40021513
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Alex_Ustinov
уник кей дт+фром достаточно
Да? с учётом девиации значения? интересно было бы увидеть...
...
Рейтинг: 0 / 0
23.11.2020, 21:31
    #40021543
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Akina
Alex_Ustinov
уник кей дт+фром достаточно
Да? с учётом девиации значения? интересно было бы увидеть...
интересно увидеть девиацию в передаче сообщения между пользователями, даже когда оба пьяны...
В любом случае послать сообщение руками одному пользователю два раза в секунду это ненормальная ситуация.
Не хочется углубляться. Но это больше задача клиента- не отсылать уже отправленное.
Я почему то в этом окне не могу отправить - оно у меня закрывается, это так, к примеру
...
Рейтинг: 0 / 0
23.11.2020, 21:33
    #40021544
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Alex_Ustinov
Akina,

Да там же уник кей дт+фром достаточно
дт+фром+ту выше крыши
...
Рейтинг: 0 / 0
23.11.2020, 21:59
    #40021549
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от дублирования записей
Alex_Ustinov,

Вы просто не успеваете .. ;)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Защита от дублирования записей / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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