Что говорит стандарт SQL о «зависимых» условных операторах в UPDATE?

Может ли кто-нибудь сказать мне, каким должен быть результат для следующего в соответствии со стандартом (ссылка на правильную часть стандарта приветствуется)

> select * from t1;
+------+
| col1 |
+------+
|    9 |
|    8 |
|   10 |
+------+
> update t1
    set col1 = col1 * 2
    where col1 <= (select avg(col1) from t1);

Дело в том,:Обновляется ли последняя строка, поскольку, если строки обновляются по порядку и среднее значение пересчитывается для каждой строки, она удовлетворяет условию, или она не обновляется, потому что любые данные, измененные этим оператором, будут доступны для чтения только после всего выписка прошла?

РЕДАКТИРОВАТЬ А как насчет этого случая?

> select * from t1;
+------+------+
| col1 | col2 |
+------+------+
|    9 |    1 |
|    8 |    2 |
|   10 |    2 |
+------+------+
> update t1 p1
    set col1 = col1 * 2
    where col1 <= (select avg(col1)
                     from t1
                     where col2=p1.col2);
6
задан Baruch 1 April 2012 в 08:46
поделиться