Каковы лучшие практики для тестирования & ldquo; разных слоев & rdquo; в Джанго? [закрыто]

В качестве примера того, почему ваша логика потерпит неудачу, возьмите сценарий, в котором PARENT A имеет запись 1 с рекордами CHILD 1A и 1B. STATE 1A - 10 и 1B - 15, поэтому вы хотите, чтобы ваш родитель был равен 10.

Теперь кто-то обновляет состояние 1A до 20, а в то же время кто-то удаляет 1B. Поскольку удаление 1B не завершено, обновление транзакции 1A по-прежнему будет видеть 1B и будет хотеть установить состояние родителя на 15, в то время как транзакция, удаляющая 1B, увидит старое незафиксированное значение 1A и будет хотеть, чтобы родительское состояние было 10.

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

37
задан 45 revs, 2 users 100% 9 August 2012 в 09:02
поделиться