15.01.2008, 15:23 | #1 |
Участник
|
Взаимоисключающие условия для like
Исходные данные задачи:
1. Есть Table1 c полями: a. Id – код b. Amount – сумма 2. Есть периодическая операция, которая должна выбрать записи из table1 и увеличить значение поля Amount на заданную величину. При запуске операции открывается временная таблица tmpTable1, с полями: a. Mask – маска для поля id в Table1 b. addAmount – величина , на которую необходимо увеличить значение в поле Amount в Table1 Т.е. примерно такой код: X++: While select from tmpTable1 Join forUpdate Table1 where Table1.Id like tmpTable1.Mask { Table1.Amount += tmpTable1.addAmount; Table1.update(); } Пример: Вариант 1 (корректный) - когда одна запись из table1 может быть сджойнена только с одной записью tmpTable1 Mask1 = 6* Mask2 = 7* Вариант2 (некорректный) - когда одна запись из table1 может быть с джойнена c несколькими записями tmpTable1 Mask1 = 6* Mask2 = *7 |
|