У меня вопрос по поводу многостолового обновления (MySQL). Рассмотрим таблицы t1 и t2. PKEY для t1 - это 'tid', который является внешним ключом в t2. В t2 есть поле "qtyt2", которое зависит от поля "qtyt1" в таблице t1. Рассмотрим следующий оператор SQL:
UPDATE t2,t1
SET t2.qtyt2=IF(( t2.qtyt2- t1.qtyt1 )<0,0,( t2.qtyt2- t1.qtyt1 ) ),
t1.qtyt1 ="Some value.."
WHERE t2.tid="some value.."
AND t2.tid=t1.tid
В этом примере qtyt2 зависит от qtyt1 для обновления, а само последнее обновляется. Теперь результат должен возвращать 2, если две строки обновлены.
Есть ли гарантия, что поля будут обновлены в том порядке, в котором они появляются в выражении (сначала будет установлено qtyt2, а затем qtyt1)?
Возможно ли, что сначала будет установлен qtyt1, а затем qtyt2?
Важен ли порядок таблиц в операторе (UPDATE t2, t1 или UPDATE t1, t2)?
Я обнаружил, что если бы я написал «ОБНОВЛЕНИЕ t1, t2», то обновился бы только t1, но при изменении оператора на «ОБНОВЛЕНИЕ t2, t1» все работало правильно.