【发布时间】:2014-04-24 16:33:21
【问题描述】:
当我运行这个查询时:
UPDATE myTable SET x = (SELECT round(random()*100));
所有记录都具有相同的 x 值。这是有道理的。
当我运行这个查询时:
UPDATE myTable SET x = round(random()*100);
它会更新表中的所有记录,并且对于每条记录,x 的值是不同的。
我想知道第二个查询在后台发生了什么。是否为每个记录 id(1....n) 运行更新查询?
我猜它的工作原理类似于触发器,更新前的每一行
- 触发器拦截
- 调用函数并设置x的值
- 执行查询
实际发生了什么?
【问题讨论】:
标签: sql postgresql random sql-update sql-execution-plan