Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
27.11.2016, 04:37
|
|||
|---|---|---|---|
|
|||
Главная-подчиненная таблицы. Добавить участника соблюдая уникальность. |
|||
|
#18+
Даже тему не смог нормально назвать ( InnoDB, autocommit = 0, явно управляем транзакциями. Организовуем разговоры персон. таблица разговоров: (таблицы имеют больше полей. оставил лишь минимум) Код: plaintext Код: plaintext Создаются разговоры, к ним добавляются участники, затем разговоры завершаются (проставляется значение talk.finishtime) Каждая персона в один момент времени может участвовать в одном активном разговоре . Как ? Какими блокировками/запросами достичь выполнения правила выше ? В транзакции выполняется ещё и другие задачи (логирование, оплата и т.д.). Посему хотелось бы оставить транзакции изоляуию READ COMMITTED. Своего решения не описываю, потому что его нет. Поле finishtime копировать с участников не хочется. Я надумал лишь выносить данные по заверешенным разговорм в отдельные талицы и на members.pers_id поставить уникальный ключ ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2016, 14:11
|
|||
|---|---|---|---|
Главная-подчиненная таблицы. Добавить участника соблюдая уникальность. |
|||
|
#18+
AndryGтаблица участников: (главный ключ на оба поля) Код: plaintext Таблица динамическая (вышел из разговора - запись удаляется) или статическая (записи только добавляются)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2016, 15:26
|
|||
|---|---|---|---|
|
|||
Главная-подчиненная таблицы. Добавить участника соблюдая уникальность. |
|||
|
#18+
В обе таблицы записи только добавляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2016, 17:48
|
|||
|---|---|---|---|
Главная-подчиненная таблицы. Добавить участника соблюдая уникальность. |
|||
|
#18+
В таком случае для каждой персоны надо делать запрос на предмет отсутствия для него записи участника незавершённого разговора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2016, 18:00
|
|||
|---|---|---|---|
|
|||
Главная-подчиненная таблицы. Добавить участника соблюдая уникальность. |
|||
|
#18+
Каждый из двух одновременно создаваемых разговора в своей транзакции добавит петю к себе. И каждый удачно закоммити изменения. В итоге петя будет в двух активных разговорах. За день надумал, что у меня есть два варианта: - либо я блокировками разруливаю добавление записей и делаю вообще невозможным добавление конкурентных записей - либо я перекраиваю структуру таблиц так, чтобы срабатывали ограничения целостности БД и тогда записи будут добавляться, но не пройдет коммит Люди добрые, помогите мыслями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2016, 18:02
|
|||
|---|---|---|---|
|
|||
Главная-подчиненная таблицы. Добавить участника соблюдая уникальность. |
|||
|
#18+
AkinaВ таком случае для каждой персоны надо делать запрос на предмет отсутствия для него записи участника незавершённого разговора. Я совсем не понял, как это реализовать. Ведь проверки будут внутри транзакций. Опишите, пжлст, подробней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1831154]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 127ms |

| 0 / 0 |
